Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''ALLOT''' (распределить, занять) — стандартное слово [[Каллисто]]. | | '''ALLOT''' — стандартное слово [[Каллисто]]. |
| ALLOT ( D −− ) Занять. Сместить вершину словаря на D байт.
| |
| Добавляет D байт к [[Поле параметров|полю параметров]] слова, описанного последним. Осмысленные значения D от -4096 до 4096, обычно намного скромнее этих границ.
| |
| | |
| Оператор N '''ALLOT''' резервирует в [[Словарь|словаре]] N байт.
| |
| | |
| == Ввод слова ALLOT ==
| |
| В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши {{ШГ←}} [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 2|{{Серая клавиша|2}}]]
| |
| | |
| == ALLOT в стандарте ANS Forth ==
| |
| <PRE>
| |
| 6.1.0710 ALLOT CORE
| |
| ( n -- )
| |
| Если n больше нуля, резервирует n адресуемых элементов области
| |
| данных. Если n меньше нуля, освобождает | n | адресуемых элементов
| |
| области данных. Если n нуль, оставляет указатель области данных
| |
| неизменным.
| |
| | |
| Если указатель области данных выровнен, и n - кратно размеру ячейки
| |
| перед выполнением ALLOT, он останется выровненным, и после
| |
| завершения выполнения ALLOT.
| |
| | |
| Если указатель области данных выровнен на символ, и n - кратно
| |
| размеру символа перед выполнением ALLOT, он останется выровненным
| |
| на символ, и после завершения выполнения ALLOT.
| |
| | |
| См.: 3.3.3 Область данных.
| |
| </PRE>
| |
| | |
| == История ==
| |
| 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).
| |
| | |
| == Реализация ==
| |
| <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''' в ядре ФОРТ-ЕС:
| |
| <PRE>
| |
| ALLOT W-> СМЕСТИТЬ ВЕРШИНУ СЛОВАРЯ НА W БАЙТОВ 10
| |
| | |
| Экран номер 10
| |
| ( 31.03.86 HERE ALLOT ALIGN ALIGNH DP! )
| |
| | |
| 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>
| |
|
| |
|
| == Ссылки == | | == Ссылки == |
| * {{Исходник|ALLOT|ALLOT}} | | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0710 Слово ALLOT в стандарте ANS Forth] ''(англ.)'' |
| * См. слова [[HERE]] и [[Слово H|H]], а также слово [[ДALLOT]]
| |
| * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0710 ALLOT] в стандарте ANS Forth ''(англ.)''
| |
| * Слово [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://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/sf9/sf9.html Under the Hood] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
| |
| | |
|
| |
|
| {{нет иллюстраций}} | | {{нет иллюстраций}} |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Работа со словарём Каллисто]] | | [[Категория:Работа со словарём Каллисто]] |
| [[Категория:Стандартные слова]]
| |
| [[Категория:1994 CORE]]
| |
| [[Категория:2012 CORE]]
| |