ALLOT: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показано 17 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''ALLOT''' (распределить, занять) — стандартное слово [[Каллисто]]. | '''ALLOT''' (распределить, занять) — стандартное слово [[Каллисто]]. | ||
ALLOT ( D −− ) Занять. Сместить вершину словаря на D байт. | |||
Добавляет D байт к [[Поле параметров|полю параметров]] слова, описанного последним. Осмысленные значения D от -4096 до 4096, обычно намного скромнее этих границ. | |||
Оператор N '''ALLOT''' резервирует в [[Словарь|словаре]] N байт. | |||
Оператор N ALLOT резервирует в словаре N байт. | |||
== Ввод слова ALLOT == | == Ввод слова ALLOT == | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши {{ШГ←}} [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 2|{{Серая клавиша|2}}]] | ||
== ALLOT в стандарте ANS Forth == | == ALLOT в стандарте ANS Forth == | ||
<PRE> | |||
6.1.0710 ALLOT CORE | 6.1.0710 ALLOT CORE | ||
( n -- ) | ( n -- ) | ||
Строка 25: | Строка 26: | ||
См.: 3.3.3 Область данных. | См.: 3.3.3 Область данных. | ||
</PRE> | |||
== История == | |||
D для советских ЭВМ типа ДВК или СМ должно было быть чётным. | |||
== ALLOT в предыдущем стандарте Forth-83 (англ.) == | === ALLOT в предыдущем стандарте Forth-83 (англ.) === | ||
ALLOT w -- 79 | ALLOT w -- 79 | ||
Allocates w bytes in the dictionary. The address of the | Allocates w bytes in the dictionary. The address of the | ||
next available dictionary entry is updated accordingly. | next available dictionary entry is updated accordingly. | ||
== ALLOT в стандарте Forth-79 (англ.) == | === ALLOT в стандарте Forth-79 (англ.) === | ||
ALLOT n -- 154 | ALLOT n -- 154 | ||
Add n bytes to the parameter field of the most recently | Add n bytes to the parameter field of the most recently | ||
defined word. | defined word. | ||
== ALLOT в fig-FORTH Release 1 glossary, май 1979 (англ.) == | === ALLOT в fig-FORTH Release 1 glossary, май 1979 (англ.) === | ||
ALLOT n --- L0 | ALLOT n --- L0 | ||
Add the signed number to the dictionary pointer DP. May be used to | Add the signed number to the dictionary pointer DP. May be used to | ||
Строка 42: | Строка 47: | ||
computer address type (byte or word). | computer address type (byte or word). | ||
== | == Реализация == | ||
<pre> | |||
145 rrDP .EQU 1137 ; 11137 H − Указатель на первую свободную ячейку словаря H @ = HERE | |||
146 pDP .EQU 137 | |||
147 rlDP .EQU 1138 | |||
… | |||
2312 ;#ALLOT | |||
2313 ; ALLOT ( D −− ) Занять. Сместить вершину словаря на n байт. | |||
2314 LALLOT: .DB 5 | |||
2315 .TEXT "ALLOT" ; ( n −− ) | |||
2316 .DW LHERE | |||
2317 ALLOT: .DW JALLOT ; Добавить D байт к полю параметров слова, описанного последним. | |||
2318 JALLOT: RM3 MA 1 + M3 | |||
2319 PPRM rlDP KRMA + | |||
2320 ENT RME / FANS <−> KINT MA ∗ − PPM rlDP | |||
2321 RMA KX!=09 | |||
2322 PPRM rrDP + PPM rrDP | |||
2323 KGOTO9 | |||
</pre> | |||
=== Реализация в SP-Forth 4.20 === | |||
<pre> | |||
: ALLOT ( n -- ) \ 94 | |||
\ Если n больше нуля, зарезервировать n байт пространства данных. Если n меньше | |||
\ нуля - освободить |n| байт пространства данных. Если n ноль, оставить | |||
\ указатель пространства данных неизменным. | |||
\ Если перед выполнением ALLOT указатель пространства данных выровнен и n | |||
\ кратно размеру ячейки, он остается выровненным и после ALLOT. | |||
\ Если перед выполнением ALLOT указатель пространства данных выровнен на | |||
\ границу символа и n кратно размеру символа, он остается выровненным на | |||
\ границу символа и после ALLOT. | |||
DP +! | |||
; | |||
</pre> | |||
== | === Советская реализация === | ||
Определение слова ALLOT в ядре ФОРТ-ЕС: | Определение слова '''ALLOT''' в ядре ФОРТ-ЕС: | ||
<PRE> | <PRE> | ||
ALLOT W-> СМЕСТИТЬ ВЕРШИНУ СЛОВАРЯ НА W БАЙТОВ 10 | |||
Экран номер 10 | Экран номер 10 | ||
( 31.03.86 HERE ALLOT ALIGN ALIGNH DP! ) | ( 31.03.86 HERE ALLOT ALIGN ALIGNH DP! ) | ||
CODE ALLOT ( N-> ) RD FIRST AH, POP B, END-CODE | CODE ALLOT ( N-> ) RD FIRST AH, POP B, END-CODE | ||
</PRE> | |||
В FORTH ИТЭФ слово '''ALLOT''' также было [[примитив]]ом, вот его определение: | |||
<PRE> | |||
HEAD 205Q,'ALLO',3240,ALLOT ; ALLOT | |||
POP BX | |||
ADD [DI]+22Q,BX | |||
NEXT | |||
</PRE> | </PRE> | ||
== Ссылки == | == Ссылки == | ||
* См. слова [[HERE]] и [[Слово H|H]] | * {{Исходник|ALLOT|ALLOT}} | ||
* См. слова [[HERE]] и [[Слово H|H]], а также слово [[ДALLOT]] | |||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0710 ALLOT] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0710 ALLOT] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http:// | * Слово [http://forth-standard.org/standard/core/ALLOT ALLOT] в черновике 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 Л.Броуди «Начальный курс программирования на языке Форт»] | * [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 Л.Броуди «Начальный курс программирования на языке Форт»] | ||
* [http://www.forth.com/starting-forth/sf8/sf8.html Variables, Constants, and Arrays] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | * [http://www.forth.com/starting-forth/sf8/sf8.html Variables, Constants, and Arrays] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | ||
Строка 68: | Строка 115: | ||
[[Категория:Примитивы]] | [[Категория:Примитивы]] | ||
[[Категория:Работа со словарём Каллисто]] | [[Категория:Работа со словарём Каллисто]] | ||
[[Категория: | [[Категория:Стандартные слова]] | ||
[[Категория:1994 CORE]] | |||
[[Категория:2012 CORE]] |
Текущая версия от 09:27, 19 февраля 2019
ALLOT (распределить, занять) — стандартное слово Каллисто.
ALLOT ( D −− ) Занять. Сместить вершину словаря на D байт.
Добавляет D байт к полю параметров слова, описанного последним. Осмысленные значения D от -4096 до 4096, обычно намного скромнее этих границ.
Оператор N ALLOT резервирует в словаре N байт.
Ввод слова ALLOT[править]
В режиме ЛАТ последовательно нажмите клавиши ШГ← − − 5 2
ALLOT в стандарте ANS Forth[править]
6.1.0710 ALLOT CORE ( n -- ) Если n больше нуля, резервирует n адресуемых элементов области данных. Если n меньше нуля, освобождает | n | адресуемых элементов области данных. Если n нуль, оставляет указатель области данных неизменным. Если указатель области данных выровнен, и n - кратно размеру ячейки перед выполнением ALLOT, он останется выровненным, и после завершения выполнения ALLOT. Если указатель области данных выровнен на символ, и n - кратно размеру символа перед выполнением ALLOT, он останется выровненным на символ, и после завершения выполнения ALLOT. См.: 3.3.3 Область данных.
История[править]
D для советских ЭВМ типа ДВК или СМ должно было быть чётным.
ALLOT в предыдущем стандарте Forth-83 (англ.)[править]
ALLOT w -- 79 Allocates w bytes in the dictionary. The address of the next available dictionary entry is updated accordingly.
ALLOT в стандарте Forth-79 (англ.)[править]
ALLOT n -- 154 Add n bytes to the parameter field of the most recently defined word.
ALLOT в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
ALLOT n --- L0 Add the signed number to the dictionary pointer DP. May be used to reserve dictionary space or re-origin memory. n is with regard to computer address type (byte or word).
Реализация[править]
145 rrDP .EQU 1137 ; 11137 H − Указатель на первую свободную ячейку словаря H @ = HERE 146 pDP .EQU 137 147 rlDP .EQU 1138 … 2312 ;#ALLOT 2313 ; ALLOT ( D −− ) Занять. Сместить вершину словаря на n байт. 2314 LALLOT: .DB 5 2315 .TEXT "ALLOT" ; ( n −− ) 2316 .DW LHERE 2317 ALLOT: .DW JALLOT ; Добавить D байт к полю параметров слова, описанного последним. 2318 JALLOT: RM3 MA 1 + M3 2319 PPRM rlDP KRMA + 2320 ENT RME / FANS <−> KINT MA ∗ − PPM rlDP 2321 RMA KX!=09 2322 PPRM rrDP + PPM rrDP 2323 KGOTO9
Реализация в SP-Forth 4.20[править]
: ALLOT ( n -- ) \ 94 \ Если n больше нуля, зарезервировать n байт пространства данных. Если n меньше \ нуля - освободить |n| байт пространства данных. Если n ноль, оставить \ указатель пространства данных неизменным. \ Если перед выполнением ALLOT указатель пространства данных выровнен и n \ кратно размеру ячейки, он остается выровненным и после ALLOT. \ Если перед выполнением ALLOT указатель пространства данных выровнен на \ границу символа и n кратно размеру символа, он остается выровненным на \ границу символа и после ALLOT. DP +! ;
Советская реализация[править]
Определение слова ALLOT в ядре ФОРТ-ЕС:
ALLOT W-> СМЕСТИТЬ ВЕРШИНУ СЛОВАРЯ НА W БАЙТОВ 10 Экран номер 10 ( 31.03.86 HERE ALLOT ALIGN ALIGNH DP! ) CODE ALLOT ( N-> ) RD FIRST AH, POP B, END-CODE
В FORTH ИТЭФ слово ALLOT также было примитивом, вот его определение:
HEAD 205Q,'ALLO',3240,ALLOT ; ALLOT POP BX ADD [DI]+22Q,BX NEXT
Ссылки[править]
- Исходный текст слова ALLOT в Каллисто Классик 1.0
- См. слова HERE и H, а также слово ДALLOT
- Слово ALLOT в стандарте ANS Forth (англ.)
- Слово ALLOT в черновике Forth 200x (англ.)
- ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
- Under the Hood в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |