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


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


Аналогия на этом не кончается: слова Форта могут быть организованы в контекстные словари и одно и то же слово может даже быть использовано в нескольких разных контекстах. Давайте рассмотрим один элемент словаря. Если мы введем: : BASE? BASE @ DUP DECIMAL . BASE ! ; почти все версии Форта скомпилируют его в словарь в формате, содержащем поле имени и поле связи (в совокупности называемые заголовком), а также поле программы и поле параметров (называемые телом слова). Заголовок используется при поиске в словаре, в то время как тело управляет тем, что слово должно делать. Четыре поля могут быть представлены в виде:

Заголовок Тело (поле имени)(поле связи) (поле программы)(поле параметров)

Адресам первого байта имени, ячейки связи, программы и поля параметров слова часто присваиваются сокращения NFA, LFA, CFA и PFA. Так, если BASE? было скомпилировано, начиная с шестнадцатеричного адреса 7000, его представление в словаре может быть описано как

Заголовок Тело Поле ИМЕНИ СВЯЗИ ПРОГРАММЫ ПАРАМЕТРОВ Длина 4 байта 2 байт 2 байта (варьируется) Адрес NFA=7000 LFA=7004 CFA=7006 PFA=7008

К несчастью, терминология Форта стала неоднозначной и путаной при использовании терминов NFA, CFA, LFA и PFA. Они часто используются не только как адреса первого байта поля, но и как содержимое поле. Так как все поля, кроме поля имени, содержат адреса (например, поле связи содержит адрес или указатель, используемый при просмотре словаря), это сильно все путает. Мы используем эти термины для обозначения только адресов полей и советуем вам поступать так же. Мы будем ссылаться на содержимое поля связи, например, называя его именно так или, может быть, как адрес или указатель, лежащий в поле связи. (Некоторые считают, что следует использовать сокращения ANF, ACF, ALF и APF, чтобы избежать путаницы. Мы же чувствуем, что, введя больше терминов, можно в действительности внести еще больший разнобой.) Давайте посмотрим, что из себя представляет каждое поле и что оно делает. Поле имени содержит имя слова, оно служит для того, чтобы было можно найти слово Форта в словаре, например, позволяя Форту исполнить слово, имя которого было введено с последующим нажатием клавиши "возврат каретки".


Начало  Назад  Вперед



Книжный магазин