Слово @
@ (разыменовать, взять, читается «извлечь») — стандартное слово Каллисто. Замещает адрес в стеке его содержимым, 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 знал слово @
Реализация
Слово @ в ФОРТ-ЕС было примитивом. Вот его описание и определение:
@ А->Н ДАТЬ ЗНАЧЕНИЕ ПО АДРЕСУ А 11 Экран номер 11 ( 31.03.86 ! 0! @ С! С@ , С, EXECUTE ) CODE @ ( А->W РАЗЫМЕНОВАТЬ A) RW2 PULL, RW2 RMASK NR, RW1 0 (, RW2 RFORTH LH, PUTRW1 B, END-CODE
Ссылки
- См. слова !, U@, C@, ИП и символ @
- Слова @ (fetch) и F@ (f-fetch) в стандарте ANS Forth (англ.)
- Слова @ (fetch) и F@ (f-fetch) в черновике Forth 200x (англ.)
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |