C!: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 53: | Строка 53: | ||
2283 RME + | 2283 RME + | ||
2284 CSTOR2: KM8 KGOTO9 | 2284 CSTOR2: KM8 KGOTO9 | ||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
CODE C! ( char c-addr -- ) \ 94 | |||
\ Записать char по адресу a-addr. | |||
MOV EDX, [EBP] | |||
MOV BYTE [EAX], DL | |||
MOV EAX, 4 [EBP] | |||
LEA EBP, 8 [EBP] | |||
RET | |||
END-CODE | |||
</pre> | </pre> | ||
Версия от 16:46, 10 ноября 2017
C! (записать байт, читается «си-присвоить») — стандартное слово Каллисто. Сохранить 8-битное число.
C! ( x a -- ) Записывает байт x по адресу a.
Записывает число x по адресу a.
Если a указывает на байтовую память (диапазон 11000…18167), двоичный байт x записывается по адресу a. В этом случае допустимые значения x от -128 до 255.
Ввод слова C!
В режиме ЛАТ последовательно нажмите три клавиши С/П P П
Эти нажатия оставляют клавиатуру в режиме NUM.
C! в стандарте ANS Forth
6.1.0850 C! "c-store" CORE ( char c-addr -- ) Сохраняет char в c-addr. Когда размер символа меньше чем размер ячейки, переданы только младшие биты, соответствующие размеру символа. См.: 3.3.3.1 Выравнивание адреса.
История
C! в предыдущем стандарте Forth-83 (англ.)
C! 16b addr -- 79 "c-store" The least-significant 8 bits of 16b are stored into the byte at addr.
C! в стандарте Forth-79 (англ.)
C! n addr -- 219 "c-store" Store the least significant 8-bits of n at addr.
C! в fig-FORTH Release 1 glossary, май 1979 (англ.)
C! b addr --- Store 8 bits at address. On word addressing computers, further specification is necessary regarding byte addressing.
Реализация
2257 STORE1: KRMA KM8 KGOTO9 ; Запись в десятичный регистр … 2272 ;#CStore 2273 ; C! ( y a −− ) Записать байт y по адресу a. 2274 ; Может также записать число y в десятичный регистр, но не регистр функций. 2275 LCSTOR: .DB 2 2276 .TEXT "C!" ; ( байт адрес −− ) 2277 .DW LZSTORE 2278 CSTOR: .DW JCSTOR 2279 JCSTOR: RM3 M8 1 + MA 1 + M3 2280 KRM8 1 EE 4 − KX>=09 ; Защита от записи в память программ 2281 M8 1000 − FX<0 STORE1 ; 1000 быстрее, чем 1 ВП 3 2282 KRMA FX<0 CSTOR2 2283 RME + 2284 CSTOR2: KM8 KGOTO9
Реализация из SP-Forth 4.20:
CODE C! ( char c-addr -- ) \ 94 \ Записать char по адресу a-addr. MOV EDX, [EBP] MOV BYTE [EAX], DL MOV EAX, 4 [EBP] LEA EBP, 8 [EBP] RET END-CODE
Советская реализация
Слово C! в ФОРТ-ЕС было примитивом. Вот его описание и определение:
C! С,А-> ЗАСЛАТЬ БАЙТ С ПО АДРЕСУ А 11 Экран номер 11 ( 31.03.86 ! 0! @ С! С@ , С, EXECUTE ) CODE C! ( C,A-> ) 14 LHRW12 BAL, RW2 RMASK NR, RW1 0 (, RW2 RFORTH STC, 2POP B, END-CODE
В FORTH ИТЭФ слово C! также было примитивом, вот его определение:
HEAD 202Q,'C',241Q,CSTOR ; C! POP BX POP AX MOV BYTE PTR [BX], AL NEXT
Ссылки
- Исходный текст слова C! в Каллисто Классик 1.0
- См. слова C@, !, П и символ !
- Слово C! (c-store) в стандарте ANS Forth (англ.)
- Слово C! (c-store) в черновике Forth 200x (англ.)
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |