Пустое слово: различия между версиями
AtH (обсуждение | вклад) (→Ссылки) |
AtH (обсуждение | вклад) |
||
Строка 17: | Строка 17: | ||
== Реализация == | == Реализация == | ||
<pre> | |||
3146 ;#null | |||
3147 ; без имени I ( −− ) Пустышка. Закончить интерпретацию входного потока. | |||
3148 ; Нулевое слово прерывает цикл INTERPRET | |||
3149 ; Старый, но весьма сомнительный приём. В Каллисто−2 будет удалён. | |||
3150 LNULL: .DB 81H | |||
3151 .DB 0 ; "\0" | |||
3152 .DW LQUERY | |||
3153 NULL: .DW CALL, BLK,UAT,ZBRAN,NUL | |||
3154 .DW ONE,BLK,PSTOR, IN,ZSTORE, QEXEC | |||
3155 NUL: .DW LEV, EXIT | |||
</pre> | |||
=== Советская реализация === | |||
Юрий Семёнов приводит следующее определение слова \0 (стр. 107): | Юрий Семёнов приводит следующее определение слова \0 (стр. 107): | ||
: 0 BLK @ ( экранный буфер?) | : 0 BLK @ ( экранный буфер?) |
Текущая версия от 20:32, 9 ноября 2017
Пустое (точнее безымянное) слово — стандартное слово Каллисто.
без имени ( −− ) Пустышка. Закончить интерпретацию входного потока.
Пустое слово — закончить интерпретацию. При исполнении прерывает текущий бесконечный цикл и возвращает управление из текущего слова.
История[править]
Специальное «пустое» имя выдаёт слово WORD, когда натыкается на символ с кодом 0, расположенный в конце входного буфера — терминала или экранного. Слово с таким именем невозможно ввести каким-либо другим образом. Его исполнение грубо (через манипуляцию стеком возвратов) прерывает бесконечный цикл входного интерпретатора.
Механизм «пустого имени» позволял избежать расходов на проверку исчерпания входного потока. По мере роста производительности микропроцессоров от него в Форте отказались, предпочтя явный контроль за введённым количеством символов. Переход на этот уровень планируется в высокопроизводительной Каллисто 2.0
X в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
X This is pseudonym for the "null" or dictionary entry for a name of one character of ascii null. It is the execution proceedure to terminate interpretation of a line of text from the terminal or within a disc buffer, as both buffers always have a null at the end.
Реализация[править]
3146 ;#null 3147 ; без имени I ( −− ) Пустышка. Закончить интерпретацию входного потока. 3148 ; Нулевое слово прерывает цикл INTERPRET 3149 ; Старый, но весьма сомнительный приём. В Каллисто−2 будет удалён. 3150 LNULL: .DB 81H 3151 .DB 0 ; "\0" 3152 .DW LQUERY 3153 NULL: .DW CALL, BLK,UAT,ZBRAN,NUL 3154 .DW ONE,BLK,PSTOR, IN,ZSTORE, QEXEC 3155 NUL: .DW LEV, EXIT
Советская реализация[править]
Юрий Семёнов приводит следующее определение слова \0 (стр. 107):
: 0 BLK @ ( экранный буфер?) IF ( если да) 1 BLK +! ( переключение указателя на следующий экран) 0 IN ! ( обнуление указателя смещения) ?EXEC ( система в режиме исполнения?) THEN R> DROP ; ( уход в QUIT)
У Баранова-Ноздрунова определение слова \0 выглядит так (стр. 79):
: X ( ---> ) R> DROP ; IMMEDIATE
Слово \0 в ФОРТ-ЕС было примитивом. Вот его описание и определение:
*Н -> (ПУСТОЕ СЛОВО) - ЗАКОНЧИТЬ ИНТЕРПРЕТАЦИЮ 40 ВХОДНОГО ПОТОКА Экран номер 40 ( 31.03.84 EXPECT OUERY INTERPRET ФОРТ-СИСТЕМА X ) CODE X ( ->) ЗАБИТЬ-Х ( НУЛЕВОЙ КОД ВМЕСТО БУКВЫ "X") EXIT# B, END-CODE IMMEDIATE
Определение слова \0 в FORTH ИТЭФ:
HEAD 301Q,,200Q,NULL,$COL ; NULL DW BLK,AT,ZBRAN,NUL-$ DW ONE,BLK,PSTOR,ZERO,IN,STORE,QEXEC NUL: DW LEV,SEMI
Ссылки[править]
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |