Слово @: различия между версиями
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) (→Ссылки) |
||
Строка 58: | Строка 58: | ||
* См. слова [[Слово !|!]], [[U@]], [[C@]], [[Слово ИП|ИП]] и [[Символ с кодом 64|символ @]] | * См. слова [[Слово !|!]], [[U@]], [[C@]], [[Слово ИП|ИП]] и [[Символ с кодом 64|символ @]] | ||
* Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0650 @ (fetch)] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1472 F@ (f-fetch)] в стандарте ANS Forth ''(англ.)'' | * Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0650 @ (fetch)] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1472 F@ (f-fetch)] в стандарте ANS Forth ''(англ.)'' | ||
* Слова [http:// | * Слова [http://forth-standard.org/standard/core/Fetch @ (fetch)] и [http://forth-standard.org/standard/float/FFetch F@ (f-fetch)] в черновике Forth 200x ''(англ.)'' | ||
* [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] ''(англ.)'' | ||
Версия от 09:32, 29 марта 2016
@ (разыменовать, взять, читается «извлечь») — стандартное слово Каллисто. Замещает адрес в стеке его содержимым, cчитывая десятичное число или 16-битное целое со знаком.
@ ( a -- x ) Извлечь. Считать значение ячейки по адресу a.
Заносит в стек число x, хранящееся в ячейке по адреcу a.
Если a указывает на байтовую память (диапазоны 0…9999 и 11000…18167), из двухбайтовой ячейки по адресам a и a+1 (старший и младший байт соответственно) считывается 16-битное двоичное целое со знаком x (x меняется от -32768 до 32767).
Ввод слова @
В режиме NUM нажмите чёрную клавишу ИП
@ в стандарте ANS Forth
6.1.0650 @ "fetch" CORE ( a-addr -- x ) x - значение, сохраненное в a-addr.
См.: 3.3.3.1 Выравнивание адреса.
F@ в стандарте ANS Forth
12.6.1.1472 F@ "f-fetch" FLOATING ( f-addr -- ) ( F: -- r ) or ( f-addr -- r ) r - значение, сохраненное в f-addr.
@ в предыдущем стандарте Forth-83 (англ.)
@ addr -- 16b 79 "fetch" 16b is the value at addr.
@ в стандарте Forth-79 (англ.)
@ addr -- n 199 "fetch" Leave on the stack the number contained at addr.
@ в fig-FORTH Release 1 glossary, май 1979 (англ.)
@ addr --- n L0 Leave the 16 bit contents of address.
История
В 1968 году Чак Мур работал в Mohasco Industries, Inc (Amsterdam NY, англ.). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово @
Реализация
Слово @ в ФОРТ-ЕС и FORTH ИТЭФ также было примитивом. Вот описание и определение @ из ФОРТ-ЕС:
@ А->W ДАТЬ ЗНАЧЕНИЕ ПО АДРЕСУ А 11 Экран номер 11 ( 31.03.86 ! 0! @ С! С@ , С, EXECUTE ) CODE @ ( А->W РАЗЫМЕНОВАТЬ A) RW2 PULL, RW2 RMASK NR, RW1 0 (, RW2 RFORTH LH, PUTRW1 B, END-CODE
Вот определение @ из FORTH ИТЭФ:
HEAD 201Q,,300Q,AT ; @ POP BX PUSH [BX] NEXT
Ссылки
- См. слова !, U@, C@, ИП и символ @
- Слова @ (fetch) и F@ (f-fetch) в стандарте ANS Forth (англ.)
- Слова @ (fetch) и F@ (f-fetch) в черновике Forth 200x (англ.)
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |