FORTH: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) (Новая страница: «'''FORTH''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слова…») |
AtH (обсуждение | вклад) |
||
(не показано 36 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''FORTH''' — стандартное слово [[Каллисто]]. | '''FORTH''' (Форт) — стандартное слово [[Каллисто]]. | ||
FORTH ( −− ) Сделать набор слов FORTH контекстным. | |||
Слово FORTH делает одноимённый [[VOCABULARY|набор слов]] [[CONTEXT|контекстным]]. | |||
== Ввод слова FORTH == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша П|{{Чёрная клавиша|П}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ПП|{{Чёрная клавиша|ПП}}]] | |||
== FORTH и FORTH-WORDLIST в стандарте ANS Forth == | |||
<pre> | |||
16.6.2.1590 FORTH SEARCH EXT | |||
( -- ) | |||
Преобразует порядок поиска, состоящий из widn, ... wid2, wid1 (где | |||
wid1 просматривается первым) в widn, ... wid2, wid FORTH-WORDLIST. | |||
16.6.1.1595 FORTH-WORDLIST SEARCH | |||
( -- wid ) | |||
Возвращает wid, идентификатор списка слов, который включает все | |||
стандартные слова, предоставленные реализацией. Этот список слов - | |||
первоначально список слов компиляции и - часть начального порядка | |||
поиска. | |||
</pre> | |||
== История == | |||
Начиная с Форта-83, слово FORTH больше не имеет [[IMMEDIATE|признака немедленного исполнения]]. При переводе определений слов с fig-Форта и Форта-79, используйте последовательность [[Слово [|[]] FORTH [[Слово ]|]]] | |||
=== FORTH в предыдущем стандарте Forth-83 (англ.) === | |||
<pre> | |||
FORTH -- 83 | |||
The name of the primary vocabulary. Execution replaces the | |||
first vocabulary in the search order with FORTH . FORTH is | |||
initially the compilation vocabulary and the first | |||
vocabulary in the search order. New definitions become part | |||
of the FORTH vocabulary until a different compilation | |||
vocabulary is established. See: VOCABULARY | |||
FORTH -- ONLY | |||
The name of the primary vocabulary. Execution makes FORTH | |||
the transient vocabulary, the first in the search order, and | |||
thus replaces the previous transient vocabulary. | |||
</pre> | |||
=== FORTH в стандарте Forth-79 (англ.) === | |||
FORTH I,187 | |||
The name of the primary vocabulary. Execution makes FORTH the | |||
CONTEXT vocabulary. New definitions become a part of the | |||
FORTH until a differing CURRENT vocabulary is established. | |||
User vocabularies conclude by 'chaining' to FORTH, so it | |||
should be considered that FORTH is 'contained' within each | |||
user's vocabulary. | |||
=== FORTH в fig-FORTH Release 1 glossary, май 1979 (англ.) === | |||
FORTH P,L1 | |||
The name of the primary vocabulary. | |||
Execution makes FORTH the CONTEXT vocabulary. Until additional user | |||
vocabularies are defined, new user definitions become a part of | |||
FORTH. FORTH is immediate, so it will execute during the creation of | |||
a colon-definition, to select this vocabulary at compile time. | |||
== Реализация == | |||
В [[Каллисто|Каллисто 1.0]] слово FORTH находится в [[Память двоичных данных|памяти данных]], куда его переносит из своего [[Поле данных|поля данных]] слово [[COLD]]: | |||
<pre> | |||
455 ; Эти две статьи (27 байт) COLD переносит в словарь в области двоичных регистров | |||
456 ; Их поле данных сможет меняться | |||
457 ; | |||
458 ;#FORTH | |||
459 ; FORTH ( −− ) Сделать набор слов FORTH контекстным. | |||
460 ; LFORTH: | |||
461 .DB 5 ; 11143 = 2b87 = LFORTH: | |||
462 .TEXT "FORTH" ; 11144: | |||
463 .DW LLOADQ ; 11149: | |||
464 .DW SDOEP ; 11151 = 2b8f = FORTH: (xt) | |||
465 .DW DOVOC ; 11153: Обработчик VOCABULARY для DOES> | |||
466 .DB 1,20H ; 11155: псевдозаголовок первого слова | |||
467 .DB 2bH,99H ; 11157: ссылка на LTASK в новой адресации | |||
468 | |||
469 ; Этим адресом инициализируется VOC−LINK | |||
470 .DW 0 ; 11159 = 2b97 = XVOC: Это должно быть уже в байтовой памяти | |||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
WORDLIST VALUE FORTH-WORDLIST ( -- wid ) \ 94 SEARCH | |||
\ Возвратить wid - идентификатор списка слов, включающего все стандартные | |||
\ слова, обеспечиваемые реализацией. Этот список слов изначально список | |||
\ компиляции и часть начального порядка поиска. | |||
… | |||
: FORTH ( -- ) \ 94 SEARCH EXT | |||
\ Преобразовать порядок поиска, состоящий из widn, ...wid2, wid1 (где wid1 | |||
\ просматривается первым) в widn,... wid2, widFORTH-WORDLIST. | |||
FORTH-WORDLIST CONTEXT ! | |||
; | |||
</pre> | |||
=== Советская реализация === | |||
Описание и определение слова FORTH в ядре ФОРТ-ЕС: | |||
<PRE> | |||
FORTH -> УСТАНОВИТЬ "CONTEXT" НА НАЧАЛЬНЫЙ СПИСОК 33 | |||
FORTH# A PFA+2 ДЛЯ СЛОВАРНОЙ СТАТЬИ "FORTH" 33 | |||
Экран номер 33 | |||
( 09.09.86 FORTH FORTH# FL# VOC-LINK VOCABULARY VOCABULARY#) | |||
VOC FORTH &DWORD H, ( FORTH-83) | |||
A: FORTH# LASTWORD ( ВХОД В СПИСОК СЛОВАРНЫХ СТАТЕЙ) | |||
A: FL# 0 Н, ( ПОЛЕ СВЯЗИ ДЛЯ СПИСКОВ СТАТЕЙ) | |||
CREATE VOC-LINK FL# ( ВХОД В СПИСОК СПИСКОВ СТАТЕЙ) | |||
</PRE> | |||
Определение слова FORTH в FORTH ИТЭФ: | |||
<PRE> | |||
HEAD 305Q,'FORT',310Q,FORTH,$DOE ; FORTH | |||
DW DOVOC,120201Q,TASK-7 | |||
XVOC LABEL FAR | |||
DW 0 | |||
</PRE> | |||
=== colorForth (cf2019.nasm 2019 Sep 14) === | |||
<PRE> | |||
sdefine: | |||
pop dword [ adefine ] | |||
ret | |||
… | |||
forth: ; select the Forth wordlist | |||
call sdefine | |||
forthd: | |||
push _TOS_ | |||
mov ecx, [ v_ForthWordCount ] | |||
inc dword [ v_ForthWordCount ] | |||
lea ecx, [ ( ecx * 4 ) + ForthNames ] | |||
mov _TOS_, ( ForthJumpTable - ForthNames ) | |||
forthdd: | |||
mov edx, [ ( edi * 4 ) - 0x04 ] | |||
and edx, byte -0x10 | |||
mov [ecx], edx | |||
mov edx, [ v_H ] | |||
mov [ecx+_TOS_], edx | |||
lea edx, [ecx+_TOS_] | |||
shr edx, 0x02 | |||
mov [ v_last ], edx | |||
pop _TOS_ | |||
mov [ list ], esp | |||
mov dword [ lit ], adup | |||
test dword [ class ], -1 | |||
jz .fthd | |||
jmp dword [ class ] | |||
.fthd: | |||
ret | |||
</PRE> | |||
== Ссылки == | |||
* {{Исходник|FORTH|FORTH}} | |||
* Слова [http://forth.sourceforge.net/standard/dpans/dpans16.htm#16.6.2.1590 FORTH] и [http://forth.sourceforge.net/standard/dpans/dpans16.htm#16.6.1.1595 FORTH-WORDLIST] в стандарте ANS Forth ''(англ.)'' | |||
* Слова [http://forth-standard.org/standard/search/FORTH FORTH] и [http://forth-standard.org/standard/search/FORTH-WORDLIST FORTH-WORDLIST] в черновике Forth 200x ''(англ.)'' | |||
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\09.FUNKZIONIROWANIE%20FORT-SISTEMY ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | |||
{{нет иллюстраций}} | {{нет иллюстраций}} | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Управление поиском слов]] | |||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 SEARCH EXT]] | |||
[[Категория:2012 SEARCH EXT]] |
Текущая версия от 14:46, 30 июня 2021
FORTH (Форт) — стандартное слово Каллисто.
FORTH ( −− ) Сделать набор слов FORTH контекстным.
Слово FORTH делает одноимённый набор слов контекстным.
Ввод слова FORTH[править]
В режиме ЛАТ последовательно нажмите клавиши П 5 × 2 ПП
FORTH и FORTH-WORDLIST в стандарте ANS Forth[править]
16.6.2.1590 FORTH SEARCH EXT ( -- ) Преобразует порядок поиска, состоящий из widn, ... wid2, wid1 (где wid1 просматривается первым) в widn, ... wid2, wid FORTH-WORDLIST. 16.6.1.1595 FORTH-WORDLIST SEARCH ( -- wid ) Возвращает wid, идентификатор списка слов, который включает все стандартные слова, предоставленные реализацией. Этот список слов - первоначально список слов компиляции и - часть начального порядка поиска.
История[править]
Начиная с Форта-83, слово FORTH больше не имеет признака немедленного исполнения. При переводе определений слов с fig-Форта и Форта-79, используйте последовательность [ FORTH ]
FORTH в предыдущем стандарте Forth-83 (англ.)[править]
FORTH -- 83 The name of the primary vocabulary. Execution replaces the first vocabulary in the search order with FORTH . FORTH is initially the compilation vocabulary and the first vocabulary in the search order. New definitions become part of the FORTH vocabulary until a different compilation vocabulary is established. See: VOCABULARY FORTH -- ONLY The name of the primary vocabulary. Execution makes FORTH the transient vocabulary, the first in the search order, and thus replaces the previous transient vocabulary.
FORTH в стандарте Forth-79 (англ.)[править]
FORTH I,187 The name of the primary vocabulary. Execution makes FORTH the CONTEXT vocabulary. New definitions become a part of the FORTH until a differing CURRENT vocabulary is established. User vocabularies conclude by 'chaining' to FORTH, so it should be considered that FORTH is 'contained' within each user's vocabulary.
FORTH в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
FORTH P,L1 The name of the primary vocabulary. Execution makes FORTH the CONTEXT vocabulary. Until additional user vocabularies are defined, new user definitions become a part of FORTH. FORTH is immediate, so it will execute during the creation of a colon-definition, to select this vocabulary at compile time.
Реализация[править]
В Каллисто 1.0 слово FORTH находится в памяти данных, куда его переносит из своего поля данных слово COLD:
455 ; Эти две статьи (27 байт) COLD переносит в словарь в области двоичных регистров 456 ; Их поле данных сможет меняться 457 ; 458 ;#FORTH 459 ; FORTH ( −− ) Сделать набор слов FORTH контекстным. 460 ; LFORTH: 461 .DB 5 ; 11143 = 2b87 = LFORTH: 462 .TEXT "FORTH" ; 11144: 463 .DW LLOADQ ; 11149: 464 .DW SDOEP ; 11151 = 2b8f = FORTH: (xt) 465 .DW DOVOC ; 11153: Обработчик VOCABULARY для DOES> 466 .DB 1,20H ; 11155: псевдозаголовок первого слова 467 .DB 2bH,99H ; 11157: ссылка на LTASK в новой адресации 468 469 ; Этим адресом инициализируется VOC−LINK 470 .DW 0 ; 11159 = 2b97 = XVOC: Это должно быть уже в байтовой памяти
Реализация из SP-Forth 4.20:
WORDLIST VALUE FORTH-WORDLIST ( -- wid ) \ 94 SEARCH \ Возвратить wid - идентификатор списка слов, включающего все стандартные \ слова, обеспечиваемые реализацией. Этот список слов изначально список \ компиляции и часть начального порядка поиска. … : FORTH ( -- ) \ 94 SEARCH EXT \ Преобразовать порядок поиска, состоящий из widn, ...wid2, wid1 (где wid1 \ просматривается первым) в widn,... wid2, widFORTH-WORDLIST. FORTH-WORDLIST CONTEXT ! ;
Советская реализация[править]
Описание и определение слова FORTH в ядре ФОРТ-ЕС:
FORTH -> УСТАНОВИТЬ "CONTEXT" НА НАЧАЛЬНЫЙ СПИСОК 33 FORTH# A PFA+2 ДЛЯ СЛОВАРНОЙ СТАТЬИ "FORTH" 33 Экран номер 33 ( 09.09.86 FORTH FORTH# FL# VOC-LINK VOCABULARY VOCABULARY#) VOC FORTH &DWORD H, ( FORTH-83) A: FORTH# LASTWORD ( ВХОД В СПИСОК СЛОВАРНЫХ СТАТЕЙ) A: FL# 0 Н, ( ПОЛЕ СВЯЗИ ДЛЯ СПИСКОВ СТАТЕЙ) CREATE VOC-LINK FL# ( ВХОД В СПИСОК СПИСКОВ СТАТЕЙ)
Определение слова FORTH в FORTH ИТЭФ:
HEAD 305Q,'FORT',310Q,FORTH,$DOE ; FORTH DW DOVOC,120201Q,TASK-7 XVOC LABEL FAR DW 0
colorForth (cf2019.nasm 2019 Sep 14)[править]
sdefine: pop dword [ adefine ] ret … forth: ; select the Forth wordlist call sdefine forthd: push _TOS_ mov ecx, [ v_ForthWordCount ] inc dword [ v_ForthWordCount ] lea ecx, [ ( ecx * 4 ) + ForthNames ] mov _TOS_, ( ForthJumpTable - ForthNames ) forthdd: mov edx, [ ( edi * 4 ) - 0x04 ] and edx, byte -0x10 mov [ecx], edx mov edx, [ v_H ] mov [ecx+_TOS_], edx lea edx, [ecx+_TOS_] shr edx, 0x02 mov [ v_last ], edx pop _TOS_ mov [ list ], esp mov dword [ lit ], adup test dword [ class ], -1 jz .fthd jmp dword [ class ] .fthd: ret
Ссылки[править]
- Исходный текст слова FORTH в Каллисто Классик 1.0
- Слова FORTH и FORTH-WORDLIST в стандарте ANS Forth (англ.)
- Слова FORTH и FORTH-WORDLIST в черновике Forth 200x (англ.)
- ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ в книге Л.Броуди «Начальный курс программирования на языке Форт»
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |