Слово ,
Перейти к навигации
Перейти к поиску
, (компилировать, читается «запятая») — стандартное слово Каллисто.
, ( d −− ) Скомпилировать d в первую свободную ячейку словаря.
Компилирует вершину стека, как 16-битное число в первую свободную ячейку словаря.
Ввод слова ,[править]
В режиме NUM нажмите белую клавишу ,
, в стандарте ANS Forth[править]
6.1.0150 , "comma" CORE ( x -- ) Резервирует одну ячейку области данных, и сохраняет x в ячейке. Если указатель области данных выровнен перед выполнением ",", то он останется выровненным после окончания выполнения ",". Неопределенная ситуация существует если указатель области данных не выровнен перед выполнением ",". См.: 3.3.3 Область данных, 3.3.3.1 Выравнивание адреса. A.6.1.0150 , Использование , (запятая) для компиляции идентификаторов исполнения - не переносимое. См.: 6.2.0945 COMPILE,.
История[править]
, в предыдущем стандарте Forth-83 (англ.)[править]
, 16b -- 79 "comma" ALLOT space for 16b then store 16b at HERE 2- .
, в стандарте Forth-79 (англ.)[править]
, n -- 143 "comma" Allot two bytes in the dictionary, storing n there.
, в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
, n --- , L0 Store n into the next available dictionary memory cell, advancing the dictionary pointer. (comma)
Реализация[править]
2936 ; ∗∗ Слова высокого уровня ∗∗ 2937 2938 ;#Comma 2939 ; , ( d −− ) Скомпилировать d в первую свободную ячейку словаря. 2940 LCOMMA: .DB 1 2941 .TEXT "," ; ( n −− ) 2942 .DW LSAVIN 2943 COMMA: .DW CALL 2944 RCOMMA: .DW HERE,STORE, TWO,ALLOT, EXIT
Реализации из SP-Forth 4.20:
: , ( x -- ) \ 94 \ Зарезервировать одну ячейку в области данных и поместить x в эту ячейку. DP @ 4 ALLOT ! ;
0 CONSTANT INLINE? … : INLINE, BEGIN COUNT DUP C3 <> WHILE C, REPEAT 2DROP ; … : _COMPILE, \ 94 CORE EXT \ Интерпретация: семантика не определена. \ Выполнение: ( xt -- ) \ Добавить семантику выполнения определения, представленого xt, к \ семантике выполнения текущего определения. ?SET SetOP 0E8 C, \ машинная команда CALL DP @ CELL+ - , DP @ TO LAST-HERE ; : COMPILE, \ 94 CORE EXT \ Интерпретация: семантика не определена. \ Выполнение: ( xt -- ) \ Добавить семантику выполнения определения, представленого xt, к \ семантике выполнения текущего определения. CON>LIT IF INLINE? IF INLINE, ELSE _COMPILE, THEN THEN ;
Советская реализация[править]
У Баранова-Ноздрунова (стр. 23), а также в 9 главе Starting FORTH приводится следующее описание слова , :
: , ( A ---> ) HERE ! 2 ALLOT ;
Описание и определение слова , в ядре ФОРТ-ЕС:
, W-> СКОМПИЛИРОВАТЬ W НА ВЕРШИНУ СЛОВАРЯ 11 Экран номер 11 ( 31.03.86 ! 0! @ С! С@ , С, EXECUTE ) : , ( W-> ) HERE 2 ALLOT ! ;
Определение слова , в FORTH ИТЭФ:
HEAD 201Q,,254Q,COMMA,$COL ; , DW HERE,STORE,TWO,ALLOT,SEMI
Переносимые программы, написанные на Форте ANS, используют слово CELL вместо 2 для совместимости с машинами, в которых ячейка занимает больше двух байт.
colorForth (cf2019.nasm 2019 Sep 14)[править]
comma_: ; 4 byte , mov ecx, 0x04 dcomma: ; c, performed n times ( n in ecx ) mov edx, [ v_H ] mov [edx], _TOS_ mov _TOS_, [ esi ] lea edx, [ ecx + edx ] lea esi, [ esi + 0x04 ] mov [ v_H ], edx ret
Ссылки[править]
- Исходный текст слова , в Каллисто Классик 1.0
- Слово , (comma) (англ.) и комментарий к нему в стандарте ANS Forth (англ.)
- Слово , (comma) (англ.) и комментарий к нему в черновике Forth 200x (англ.)
- ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
![]() |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |