⟩BODY: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 9: Строка 9:


Для возврата в [[режим NUM]] нажмите [[Клавиша P|синюю клавишу {{Синяя клавиша|P}}]].
Для возврата в [[режим NUM]] нажмите [[Клавиша P|синюю клавишу {{Синяя клавиша|P}}]].
== Детали реализации ==
Вообще говоря, [[поле кода]] может занимать больше двух байт, например быть [[Векторное поле кода|векторным]] или быть созданным с помощью [[⟨BUILDS|<BUILDS]]. Размер [[Поле кода|поля кода]] нигде не хранится, так что программист должен  должен знать структуру [[Поле кода|поля кода]] обрабатываемого слова, а не полагаться на слово >BODY, обрабатывающее лишь стандартный случай.


== >BODY в стандарте ANS Forth ==
== >BODY в стандарте ANS Forth ==
Строка 34: Строка 31:


== Реализация ==
== Реализация ==
В [[Каллисто]] слово >BODY является синонимом слова [[2+]] и использует его обработчик.
Вообще говоря, [[поле кода]] может занимать больше двух байт, например быть [[Векторное поле кода|векторным]] или быть созданным с помощью [[⟨BUILDS|<BUILDS]]. Размер [[Поле кода|поля кода]] нигде не хранится, так что программист должен  должен знать структуру [[Поле кода|поля кода]] обрабатываемого слова, а не полагаться на слово >BODY, обрабатывающее лишь стандартный случай.
 
В [[Каллисто|Каллисто 1.0]] слово >BODY является синонимом слова [[2+]] и использует его обработчик:
<pre>
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+
</pre>


=== Советская реализация ===
Описание и определение слова &gt;BODY в ядре ФОРТ-ЕС:
Описание и определение слова &gt;BODY в ядре ФОРТ-ЕС:
<PRE>
<PRE>

Версия от 10:41, 9 ноября 2017

>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+

Советская реализация

Описание и определение слова >BODY в ядре ФОРТ-ЕС:

>BODY     CFA->PFA ОТ ПОЛЯ КОДА К ПОЛЮ ПАРАМЕТРОВ               30

                     Экран номер 30
( 31.03.86  >BODY BODY> >LINK LINK> L>NAME N>LINK >NAME NAME> )

: >BODY  ( CFA->PFA) 2+ ;

Ссылки


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.