Язык Форт и его реализации



         

Целевая компиляция и модель форт-системы - часть 2


Эти директивы включают, в частности, средства предописания слов для того, чтобы некоторые слова можно было использовать раньше их определения (например, чтобы в запускающей части, с которой обычно начинается входной текст, указать имя главного слова, которое будет определено только в конце). Важной возможностью является управление построением целевой словарной статьи: некоторые или даже все статьи можно создать без заголовка, значительно сократив за счет этого размер рабочего модуля. Кроме того, язык директив обычно содержит средства для диагностики, распечатки карты создаваемого модуля, построения таблицы перекрестных ссылок, сбора и распечатки статистической информации об использовании тех или иных слов.

Пакет целевой компиляции представляет собой отдельно загружаемый пакет, написанный на языке Форт. В начале работы он резервирует область памяти для целевого адресного пространства, в которой строит двоичный код конечного программного продукта по мере обработки входного текста. После завершения целевой компиляции построенный модуль может быть выгружен во внешнюю память для дальнейшего использования в качестве независимого модуля в соответствии с заложенными в него соглашениями о связях.

В состав пакета целевой компиляции входят целевой ассемблер и целевой компилятор. Целевой ассемблер отличается от обычного встроенного ассемблера форт-системы только тем, что строит машинный код не в инструментальном адресном пространстве от текущей вершины словаря, которая задается словом HERE (здесь), а в целевом. Указатель в целевом адресном пространстве обычно обозначается словом THERE (там) внутри самого пакета, который пользуется обоими этими указателями. Для того чтобы получить целевой ассемблер из исходного инструментального, как правило, достаточно оттранслировать его в контексте других определений компилирующих слов (, , C, , ALLOT и т.д.), которые выполняют те же действия, но в целевом адресном пространстве, а не в инструментальном.

Задача целевого компилятора состоит в построении высокоуровневого шитого кода в целевом адресном пространстве, причем все ссылки на статьи, включая и ссылки на все стандартные форт-слова, должны также относиться к этому пространству.


Содержание  Назад  Вперед