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



Приложение Д. Ответы к упражнениям - часть 32


Блок 149 [149 :0] ( Глава 15. Упражнения 5. 03 из 03 ) ( 5. ) ( Ниже предполагается, что 3301 равно CFA слова LIT. ) : NEWLITERAL ?СОМР 3301 , , ; IMMEDIATE : NEWDLITERAL ?COMP SWAP 3301 , , 3301 , , ; IMMEDIATE ( 6. ) ( Ниже предполагается, что 3265 равно CFA слова ?BRANCH и что 3257 равно CFA слова BRANCH. : NEWIF ?СОMР 3265 , HERE 0 , ; IMMEDIATE : NEWELSE ?COMP 3257 , HERE 0 , HERE ROT ! ; IMMEDIATE

Блок 150 [150 :0] ( Глава 15. Упражнения 6. 01 из 02 ) ( 1. ) : TASK ; FIND TASK @ CONSTANT COLON-ADDR ( ' TASK @ в 83 ) COLON-ADDR >R HERE R@ , ] ." Word#0 " EXIT [ CONSTANT 0WORD HERE R> , ] ." Word#1 " EXIT [ CONSTANT 1WORD ( 2. ) : ANYWORD [ 0WORD , 1WORD , ] ; ( 3. ) : MAKEWORD CREATE 1WORD , 0WORD , DOES> SWAP 2 * + @ EXECUTE ; ( 4. ) : GIVE-NAME CREATE , DOES> @ EXECUTE ; ( 5. ) COLON-ADDR HERE SWAP , ] ." Word#2 " EXIT [ : 2WORD [ SWAP , ] ; ( если в стеке хранится число, засланное оператором : . )

Блок 151 [151 :0] ( Глава 15. Упражнения 6. 02 из 02 ) ( 6. ) ( Опишите) : ?BR 3265 , ; : BR 3257 , ; ( или другие адреса ) ( Используется вместо COMPILE ?BRANCH и COMPILE BRANCH в описании IF и ELSE . ) ( 7. ) ( Опишите следующее ниже и используйте вместо COMPILE LIT в описании LITERAL . ) : LT 3301 , ; ( Или другой соответствующий адрес.)

Блок 152 [152 :0] ( Глава 15. Упражнения 7. 01 из 02 ) ( 1. ) ( Адреса являются ячейками в поле параметров, где запоминаются очередные CFA. подлежащие исполнению. ) ( 2. ) ( Осуществляется переход к завершению 3LEVEL. ) ( 3. ) ( Использование R> DROP в 3LEVEL удалит адрес, который определяет куда будет передано управление после выполнения слова, что вызовет сбой в работе внутреннего интерпретатора и разрушение системы. ) ( 4. ) ( WP можно использовать для получения значения константы) ( 5.) ( В обоих случаях EXIT передает управление в точку, откуда было осуществлено обращение к слову. )

Блок 153 [ 153 :0] ( Глава 15. Упражнения 7. 02 из 02 ) ( 6. ) ( LIT увеличивает число в стеке возвратов и ( удаляет из стека откомпилированное число.


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