Слово ]

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

] (закрывающая квадратная скобка) — стандартное слово Каллисто. Перейти в состояние компиляции.

]              ( −− )                               Установить состояние компиляции.

Переключить текстовый интерпретатор Каллисто в состояние компиляции. При компиляции адреса («токены») вводимых слов записываются в словарь («компилируются»), формируя шитый код. Его исполнение произойдёт позже, уже адресным интерпретатором.

Ввод слова ][править]

В режиме NUM нажмите чёрную клавишу  ПП 

] в стандарте ANS Forth[править]

 6.1.2540   ]                          "right-bracket"                      CORE
            ( -- )
            Вводит состояние компиляции.

        См.: 3.4 Интерпретатор текста Forth, 3.4.5 Компиляция, 6.1.2500 [.

 A.6.1.2540   ]
 Типичное использование:
        : X ... [ 1234 ] LITERAL ... ;

История[править]

Состояние компиляции Каллисто напоминает режим программирования ЭКВМ, ведь в режиме программирования ЭКВМ также не сразу исполняет вводимые инструкции, а запоминает их для последующего автоматического исполнения в режиме выполнения программы.

Компилятор появился в Форте в 1968 году (Mohasco), хотя версия Форта для Burroughs B-5500 (1969) всё ещё хранила определения в текстовом виде.

В 1968 году Чак Мур работал в Mohasco Industries, Inc (Amsterdam NY, англ.). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем IBM 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт).

В то время компилятор ещё не был завершён и тела слов высокого уровня содержали текст определения, за исключением лишних пробелов. Интерпретатор считывал имя и искал его на совпадение в связанном списке. Все важные составляющие Форта были завершены к 1968 году, кроме компилятора.

В 1971 году Форт был переписан на Фортране для Honeywell H316 в NRAO (National Radio Astronomy Observatory). До этого для ассоциации слова с подпрограммой использовались флаги или вычисляемые GO TO. Всё это было заменено на кодофайл (англ. code file), содержащий адреса подпрограмм. Благодаря этому появился необычайно быстрый способ применения слова, как только оно было распознано. Форт был очень быстро переписан с Фортрана на ассемблер, идея писать Форт на Форте возникла гораздо позже.

Тогда и был совершён следующий шаг, компилятор. Это означает распознавание. Вместо того, чтобы интерпретировать строчку текста, слова могут быть откомпилированы и в среднем 5 символов на слово могут быть заменены 2 байтами на слово. Это давало коэффициент сжатия 2 или 3, не решающе, но ценно. Важнее, что значительно ускорилась скорость исполнения.

Через пару лет при переносе Форта на PDP-11 добавилась многозадачность на 4 задачи.

Слово ] вошло во все стандарты Форта и хорошо устоялось, не изменившись со времён fig-Форта в 1979 году.

] в предыдущем стандарте Forth-83 (англ.)[править]

     ]            --                            79     "right-bracket"
          Sets compilation state.  The text from the input stream is
          subsequently compiled.  For typical usage see LITERAL .
          See:  [

] в стандарте Forth-79 (англ.)[править]

]                                            126    "right-bracket"
    Sets the compilation mode.   The text from the input stream is
    subsequently compiled.  See [

] в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

]                                                 L1
       Resume compilation, to the completion of a colon-definition.
       See [.

Реализация[править]

  96 rrSTATE         .EQU     1108                   ; 11108  STATE − STATE=0 − исполнение, STATE=128 − компиляция
  97 pSTATE          .EQU      108
  98 rlSTATE         .EQU     1109                   ;     
…
2354 SETSTATE:       PPM rlSTATE
2355                 CX
2356                 PPM rrSTATE
2357                 KGOTO9
2358 
2359 ;#right−bracket
2360 ; ]                ( −− )                               Установить состояние компиляции.
2361 LRBRAC:         .DB     1
2362                 .TEXT   "]"
2363                 .DW     LLBRAC
2364 RBRAC:          .DW     JRBRAC                  ; Переключить текстовый интерпретатор в состояние компиляции.
2365 JRBRAC:         128  GOTO SETSTATE              ; Начать компиляцию

Реализация в SP-Forth 4.20[править]

: ] ( -- ) \ 94 CORE
\ Установить состояние компиляции.
  TRUE STATE !
;

Советская реализация[править]

У Баранова-Ноздрунова приводится следующее определение слова ] (стр. 24):

 : ]   ( ---> )    128 STATE ! ;

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

  ]           ->                     ПЕРЕКЛЮЧИТЬ ТЕКСТОВЫЙ ИНТЕРПРЕТАТОР  22
                                                      В РЕЖИМ КОМПИЛЯЦИИ

                     Экран номер 22
( 31.03.86   FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)

: ]  ( -> ) -1 STATE ! ;

В FORTH ИТЭФ слово ] было примитивом, вот его определение:

            HEAD     301Q,,335Q,RBRAC                     ; ]
            MOV  WORD PTR [DI]+54Q,300Q   ; Начало компиляции
            NEXT

Ссылки[править]


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


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