7.3 Единообразие программного интерфейса
==161
Основным концептуальным свойством стековых машин является единообразие интерфейса между кодом высокого уровня и машинными инструкциями. И вызовы процедур, и коды операций используют стек как способ передачи данных. Такая однородность взаимодействия имеет несколько положительных эффектов при создании программного обеспечения.
Исходные тексты программы не должны ни в каком виде противопоставлять ( и даже различать ) инструкции, которые поддерживаются машиной напрямую, от функций, выполненных в виде цепочки команд . [* Выделено мной. Ещё одно из в высшей степени важных свойств стековых машин ] . Такая возможность предполагает использование низкоуровневого стекового языка, подобного FORTH, который будет целевым при компиляции других языков. Имея целевой язык в качестве ассемблера для машины [* например, связку Java & Jasmin ( ассемблер для виртуальной машины Java )] , пользователь может не беспокоиться о способе реализации конкретной функции. Это означает, что различные реализации одной архитектуры можно сделать совместимыми на уровне исходных текстов стекового языка без необходимости иметь полный набор инструкций в недорогих моделях. Если для обычных языков используется тот же программный интерфейс, что и для FORTH, любые пропорции текстов на Си, FORTH и других языках могут смешиваться без каких-либо проблем.
==162
В машинах с подгружаемым микрокодом, например, RTX 32P доработку интерфейса можно продолжить. Микрокод, зависящий от конкретного приложения, может в прозрачном для пользователя режиме подменять критичные последовательности команд в коде, выдаваемом универсальным компилятором. Фактически общий метод создания приложения на машине с подгружаемой системой команд заключается в написании высокоуровневого текста программы и последующего написания микрокода для критичных циклов. [* Сначала пишем псевдокод, а затем строим под него систему команд ] . Переписывание процедур с высокоуровневого языка на микрокод незаметно для остальной программы, если не считать увеличения быстродействия. Для множества приложений ожидается двукратный средний прирост производительности.
==162