Редактирование: ALLOT

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''ALLOT''' (распределить, занять) — стандартное слово [[Каллисто]].
'''ALLOT''' (распределить, занять) — стандартное слово [[Каллисто]].
ALLOT          ( D −− )                            Занять. Сместить вершину словаря на D байт.
Добавляет D байт к [[Поле параметров|полю параметров]] слова, описанного последним. Осмысленные значения D от -4096 до 4096, обычно намного скромнее этих границ.


Оператор N '''ALLOT''' резервирует в [[Словарь|словаре]] N байт.
Добавляет n байт к полю параметров слова, описанного последним.
 
Оператор N ALLOT резервирует в словаре N байт.


== Ввод слова ALLOT ==
== Ввод слова ALLOT ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши {{ШГ←}} [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 2|{{Серая клавиша|2}}]]
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 2|{{Серая клавиша|2}}]]


== ALLOT в стандарте ANS Forth ==
== ALLOT в стандарте ANS Forth ==
<PRE>
  6.1.0710  ALLOT                                                          CORE
  6.1.0710  ALLOT                                                          CORE
             ( n -- )
             ( n -- )
Строка 26: Строка 25:


         См.: 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
         reserve dictionary space or re-origin memory. n is with regard to
         reserve dictionary space or re-origin memory. n is with regard to
         computer address type (byte or word).
         computer address type (byte or word).
== История ==
N для советских ЭВМ типа ДВК или СМ должно было быть чётным.


== Реализация ==
== Реализация ==
<pre>
Определение слова ALLOT в ядре ФОРТ-ЕС:
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>
<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>


== Ссылки ==
== Ссылки ==
* {{Исходник|ALLOT|ALLOT}}
* См. слова [[HERE]] и [[Слово H|H]]
* См. слова [[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://forth-standard.org/standard/core/ALLOT ALLOT] в черновике Forth 200x ''(англ.)''
* Слово [http://www.forth200x.org/documents/html3/core/ALLOT.html 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] ''(англ.)''
Строка 115: Строка 68:
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Работа со словарём Каллисто]]
[[Категория:Работа со словарём Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:Слова Каллисто без стековых диаграмм]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/ALLOT