C@
Перейти к навигации
Перейти к поиску
C@ (разыменовать байт, читается «си-извлечь») — стандартное слово Каллисто. Считать содержимое байта, адрес которого находится в стеке.
C@ ( a -- x ) Извлечь байт. Считать значение по адресу a.
Замещает адрес a в стеке его содержимым x.
Если a указывает на байтовую память (диапазоны 0…9999 и 11000…18167), считывается двоичный беззнаковый байт x по адресу a, x меняется от 0 до 255.
Примитив C@ может считать и десятичное число, если по адресу a находится десятичный регистр (диапазон 10000…10999).
Ввод слова C@
В режиме ЛАТ последовательно нажмите три клавиши С/П P ИП
Эти нажатия оставляют клавиатуру в режиме NUM.
C@ в стандарте ANS Forth
6.1.0870 C@ "c-fetch" CORE ( c-addr -- char ) Выбирает символ, сохраненный в c-addr. Когда размер ячейки больше чем размер символа, все неиспользованные старшие биты - нули. См.: 3.3.3.1 Выравнивание адреса.
История
C@ в предыдущем стандарте Forth-83 (англ.)
C@ addr -- 8b 79 "c-fetch" 8b is the contents of the byte at addr.
C@ в стандарте Forth-79 (англ.)
C@ addr -- byte 156 "c-fetch" Leave on the stack the contents of the byte at addr (with higher bits zero, in a 16-bit field).
C@ в fig-FORTH Release 1 glossary, май 1979 (англ.)
C@ addr --- b Leave the 8 bit contents of memory address. On word addressing computers, further specification is needed regarding byte addressing.
Реализация
2186 ;#CFetch 2187 ; C@ ( a −− x ) Извлечь байт. Считать значение по адресу a. 2188 ; Извлечь байт информации из ячейки, адрес которой находится в стеке. 2189 ; Если считать байт из памяти программ или байтовой памяти, старшие биты будут равны нулю. 2190 ; Так можно считывать значения из регистров функций и десятичных регистров. 2191 LCAT: .DB 2 2192 .TEXT "C@" ; ( адрес −− байт ) 2193 .DW LUAT 2194 CAT: .DW JCAT 2195 JCAT: PKRM03 1 EE 4 − FX>=0 CAT1 2196 CAT0: MA KRMA PKM03 KGOTO9 2197 CAT1: PKRM03 2198 CAT2: KPRGM PKM03 KGOTO9
Реализация из SP-Forth 4.20:
CODE C@ ( c-addr -- char ) \ 94 \ Получить символ по адресу c-addr. Незначащие старшие биты ячейки нулевые. MOVZX EAX, BYTE [EAX] RET END-CODE
Советская реализация
Слово C@ в ФОРТ-ЕС было примитивом. Вот его описание и определение:
C@ A->С ДАТЬ БАЙТ ПО АДРЕСУ А 11 Экран номер 11 ( 31.03.86 ! 0! @ С! С@ , С, EXECUTE ) CODE C@ ( A->C) RW2 PULL, RW2 RМASК NR, RW1 RW1 SR, RW1 0 (, RW2 RFORTH IC, PUTRW1 B, END-CODE
В FORTH ИТЭФ слово C@ также было примитивом, вот его определение:
HEAD 202Q,'C',300Q,CAT ; C@ POP BX MOV AL, BYTE PTR [BX] SUB AH, AH PUSH AX NEXT
Ссылки
- Исходный текст слова C@ в Каллисто Классик 1.0
- См. слова @, U@, C! и символ @
- Слово C@ (c-fetch) в стандарте ANS Forth (англ.)
- Слово C@ (c-fetch) в черновике Forth 200x (англ.)
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |