Редактирование: Слово @
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''@''' (разыменовать, взять | '''@''' (разыменовать, взять, читается «извлечь») — стандартное слово [[Каллисто]]. Замещает [[Единое адресное пространство|адрес]] в [[Стек данных|стеке]] его содержимым, cчитывая [[десятичное число]] или 16-битное целое со знаком. | ||
@ ( a -- x ) Извлечь. Считать значение ячейки по адресу a. | @ ( a -- x ) Извлечь. Считать значение ячейки по адресу a. | ||
[[Файл:CallistoBuildsDoes.png|thumb|right|264px|Пример работы слова @]] | [[Файл:CallistoBuildsDoes.png|thumb|right|264px|Пример работы слова @]] | ||
Заносит в [[Стек данных|стек]] число x, хранящееся в [[Ячейка (Каллисто)|ячейке]] по [[Единое адресное пространство|адреcу]] a. | Заносит в [[Стек данных|стек]] число x, хранящееся в [[Ячейка (Каллисто)|ячейке]] по [[Единое адресное пространство|адреcу]] a. | ||
Если a указывает на байтовую память (диапазоны 0…9999 и 11000…18167), из [[Ячейка (Каллисто)|двухбайтовой ячейки]] по [[Единое адресное пространство|адресам]] a и a+1 (старший и младший байт соответственно) считывается 16-битное [[Шестнадцатеричный формат|двоичное]] целое со знаком x (x меняется от -32768 до 32767). | |||
== Ввод слова @ == | == Ввод слова @ == | ||
В [[Режим NUM|режиме NUM]] нажмите [[Клавиша ИП|чёрную клавишу {{Чёрная клавиша|ИП}}]] | В [[Режим NUM|режиме NUM]] нажмите [[Клавиша ИП|чёрную клавишу {{Чёрная клавиша|ИП}}]] | ||
== | == @ в стандарте ANS Forth == | ||
6.1.0650 @ "fetch" CORE | 6.1.0650 @ "fetch" CORE | ||
( a-addr -- x ) | ( a-addr -- x ) | ||
Строка 15: | Строка 16: | ||
См.: 3.3.3.1 Выравнивание адреса. | См.: 3.3.3.1 Выравнивание адреса. | ||
== F@ в стандарте ANS Forth == | |||
12.6.1.1472 F@ "f-fetch" FLOATING | 12.6.1.1472 F@ "f-fetch" FLOATING | ||
( f-addr -- ) ( F: -- r ) or ( f-addr -- r ) | ( f-addr -- ) ( F: -- r ) or ( f-addr -- r ) | ||
r - значение, сохраненное в f-addr. | r - значение, сохраненное в f-addr. | ||
== @ в предыдущем стандарте Forth-83 (англ.) == | |||
@ addr -- 16b 79 "fetch" | @ addr -- 16b 79 "fetch" | ||
16b is the value at addr. | 16b is the value at addr. | ||
== @ в стандарте Forth-79 (англ.) == | |||
@ addr -- n 199 "fetch" | @ addr -- n 199 "fetch" | ||
Leave on the stack the number contained at addr. | Leave on the stack the number contained at addr. | ||
== @ в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
@ addr --- n L0 | @ addr --- n L0 | ||
Leave the 16 bit contents of address. | Leave the 16 bit contents of address. | ||
== История == | |||
В 1968 году Чак Мур работал в Mohasco Industries, Inc ([https://en.wikipedia.org/wiki/Amsterdam_%28city%29,_New_York Amsterdam NY], ''англ.''). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово @ | |||
== Реализация == | == Реализация == | ||
Слово @ в ФОРТ-ЕС и FORTH ИТЭФ также было [[примитив]]ом. Вот описание и определение @ из ФОРТ-ЕС: | Слово @ в ФОРТ-ЕС и FORTH ИТЭФ также было [[примитив]]ом. Вот описание и определение @ из ФОРТ-ЕС: | ||
<PRE> | <PRE> | ||
Строка 101: | Строка 56: | ||
== Ссылки == | == Ссылки == | ||
* См. слова [[Слово !|!]], [[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 ''(англ.)'' | ||
Строка 113: | Строка 67: | ||
[[Категория:Одноместные операции Каллисто]] | [[Категория:Одноместные операции Каллисто]] | ||
[[Категория:Работа с памятью Каллисто]] | [[Категория:Работа с памятью Каллисто]] | ||