⟩BODY
>BODY (к телу) — стандартное слово Каллисто. Получить адрес поля данных слова, токен которого находится в стеке.
>BODY ( т −− a ) К телу. Преобразовать адрес поля кода в адрес поля параметров.
Слово >BODY преобразует CFA в PFA.
Слово >BODY включено в обязательное «ядро» (CORE) действующего стандарта Форта и присутствует в черновике готовящегося стандарта. Его переносимость весьма необычна для таких «интимных» слов, как преобразования полей словарной статьи.
Ввод слова >BODY[править]
В режиме NUM последовательно нажмите клавиши F ИП Р-ГРД-Г В/О 5 K ,
Для возврата в режим NUM нажмите синюю клавишу P .
>BODY в стандарте ANS Forth[править]
6.1.0550 >BODY "to-body" CORE ( xt -- a-addr ) a-addr - адрес области данных соответствующей xt. Неопределенная ситуация существует, если xt не для слова определенного через CREATE. См.: 3.3.3 Область данных. A.6.1.0550 >BODY a-addr - адрес, который HERE возвратило бы, если бы было выполнено немедленно после выполнения CREATE которое определило xt.
>BODY в предыдущем стандарте Forth-83 (англ.)[править]
>BODY addr1 -- addr2 83 "to-body" addr2 is the parameter field address corresponding to the compilation address addr1. See: "9.2 Addressable Memory"
Реализация[править]
Вообще говоря, поле кода может занимать больше двух байт, например быть векторным или быть созданным с помощью <BUILDS. Размер поля кода нигде не хранится, так что программист должен должен знать структуру поля кода обрабатываемого слова, а не полагаться на слово >BODY, обрабатывающее лишь стандартный случай.
В Каллисто 1.0 слово >BODY является синонимом слова 2+ и использует его обработчик:
1284 JTWOP: 2 1285 .DB 59H ; FX>=0 aka пропустить 1 байт 1286 JONEP: 1 1287 NONEP: PKRM03 + PKM03 KGOTO9 … 1292 ;#toBODY 1293 ; >BODY ( т −− a ) К телу. Преобразовать адрес поля кода в адрес поля параметров. 1294 LGBODY: .DB 5 1295 .TEXT ">BODY" ; ( cfa −− pfa ) 1296 .DW LTWOP 1297 GBODY: .DW JTWOP ; Синоним 2+
Реализация из SP-Forth 4.20:
: >BODY ( xt -- a-addr ) \ 94 \ a-addr - адрес поля данных, соответствующий xt. \ Исключительная ситуация возникает, если xt не от слова, \ определенного через CREATE. ( 1+ @ было в версии 2.5 ) 5 + ;
Советская реализация[править]
Описание и определение слова >BODY в ядре ФОРТ-ЕС:
>BODY CFA->PFA ОТ ПОЛЯ КОДА К ПОЛЮ ПАРАМЕТРОВ 30 Экран номер 30 ( 31.03.86 >BODY BODY> >LINK LINK> L>NAME N>LINK >NAME NAME> ) : >BODY ( CFA->PFA) 2+ ;
Ссылки[править]
- Исходный текст слова >BODY в Каллисто Классик 1.0
- См. слова BODY>, NAME>, N>BODY и N>LINK
- Слово >BODY (to-body) и комментарий к нему в стандарте ANS Forth (англ.)
- Слово >BODY (to-body) и комментарий к нему в черновике Forth 200x (англ.)
- ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ в книге Л.Броуди «Начальный курс программирования на языке Форт»
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |