В этих определениях для контроля
В этих определениях для контроля вместе с адресом зарезервированного места передается число 1, которое проверяется с помощью слова
?PAIRS в словах, использующих переданный адрес. Такой простой способ контроля на практике оказывается вполне достаточным. При этом программист может встроить любой другой контроль по своему желанию.
Приведенное определение условного оператора связано с реализацией стандартных слов
BRANCH и
?BRANCH, выполняющих переходы в шитом коде. Из соображений эффективности эти слова обычно задают как подпрограммы нижнего уровня в машинном языке. Тогда в зависимости от архитектуры ЭВМ может оказаться предпочтительней не абсолютный, как в приведенной реализации, а относительный адрес перехода, компилируемый в шитый код сразу после ссылки на статью
BRANCH или
?BRANCH. Чтобы сделать определения, использующие эти слова, машиннонезависимыми, стандарт предусматривает следующие слова для организации таких ссылок:
>MARK ---> A >RESOLVE A ---> <MARK ---> A <RESOLVE A --->
Слово
>MARK (от MARK — отметить) резервирует место для ссылки вперед и оставляет адрес зарезервированного места на стеке. Слово
>RESOLVE (от RESOLVE — разрешить) снимает этот адрес со стека и вписывает в него ссылку на текущую вершину словаря в соответствии с принятой реализацией переходов в шитом коде, согласованной с реализацией слов
BRANCH и
?BRANCH. Аналогично слова
<MARK и
<RESOLVE предназначены для организации ссылок назад. Слово
<MARK кладет на стек текущий адрес вершины словаря, а слово
<RESOLVE компилирует ссылку на переданную точку. Окончательно определения слов условного оператора можно задать следующим образом (как они и выглядят в большинстве практических реализаций):
: IF ( ---> A,1 ) COMPILE ? BRANCH >MARK 1 ; IMMEDIATE : THEN ( A,1 ---> ) 1 ?PAIRS >RESOLVE ; IMMEDIATE : ELSE ( A1,1 ---> A2,1 ) 1 ?PAIRS COMPILE BRANCH >MARK SWAP >RESOLVE 1 ; IMMEDIATE
Аналогичным образом реализуются слова для циклов с проверкой (рис. 2.6):
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий