Язык программирования Форт



Глава 14. Память Форта. Словари и контекстные словари - часть 4


HEX - первое слово MMSFORTH, текст которого доступен для программиста. Тексты форт-описаний,начиная с HEX и далее, хранятся в виде блоков на диске и могут компилироваться по выбору или модифицироваться с целью получения версии MMSFORTH, отвечающей вашим собственным требованиям. Этот текст включает в себя расширение компилятора, ассемблер, программы управления печатающим устройствам, экранный редактор и многое другое. Когда первая часть этого "репертуара" блоков загружена, MMSFORTH становится согласованным со стандартом Форт-79. Некоторые версии Форта предоставляют текст почти всего словаря, для других это предоставляется за дополнительную плату. Некоторые используют мета компилятор для трансляции ядра словаря, а некоторые как MMSFORTH, рассматривают ядро словаря как собственность. Не важно, каков размер словаря, адрес первого доступного байта после словаря засылается в стек оператором HERE. HERE берет значение указателя словаря (переменная пользователя с именем DP в MMSFORTH и большинстве других версий, но ни в одном из стандартов она не упомянута) и заносит его в стек. Слово HERE можно описать как : HERE DP @ ;

В целях ускорения его можно описать в машинных кодах. Хотя мы часто обращаемся к HERE так, как если бы это была константа, которая засылает в стек адрес конца словаря, нужно помнить, что это в действительности слово, которое выдает значение переменной - пользователя. То есть вы не можете ее изменить, дав команду HERE !. Конечно, значение, выдаваемое HERE, изменяется по мере пополнения словаря при компиляции новых слов или в результате работы оператора FORGET, удаляющего слова из словаря. Действительно, : ALLOT DP + ! : является описанием, используемым в некоторых версиях Форта для изменения значения HERE.

Вспомним из гл.9, что память, начиная с HERE и далее, используется оператором WORD в качестве временного буфера или области для запоминания, а "плавающая" зона, отстоящая от HERE на фиксированное число байтов, является временным буфером, адрес которого сообщает PAD.


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