C!: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) Нет описания правки |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''C!''' (записать байт, читается «си-присвоить») — стандартное слово [[Каллисто]]. Сохранить 8-битное число. | '''C!''' (записать байт, читается «си-присвоить») — стандартное слово [[Каллисто]]. Сохранить 8-битное число. | ||
C! ( | C! ( y a -- ) Записывает байт y по адресу a. | ||
Записывает число | Записывает число y по [[Единое адресное пространство|адресу]] a. | ||
Если a указывает на байтовую память (диапазон 11000…18167), [[Шестнадцатеричный формат|двоичный]] байт | Если a указывает на [[Регистры байтовых данных|байтовую память]] (диапазон 11000…18167), [[Шестнадцатеричный формат|двоичный]] байт y записывается по [[Единое адресное пространство|адресу]] a. В этом случае допустимые значения y от -128 до 255. | ||
Если a в диапазоне от 10000 до 10999, запись y проводится в [[десятичный регистр]]. | |||
== Ввод слова C! == | == Ввод слова C! == | ||
Строка 11: | Строка 13: | ||
== C! в стандарте ANS Forth == | == C! в стандарте ANS Forth == | ||
<PRE> | |||
6.1.0850 C! "c-store" CORE | 6.1.0850 C! "c-store" CORE | ||
( char c-addr -- ) | ( char c-addr -- ) | ||
Строка 18: | Строка 21: | ||
См.: 3.3.3.1 Выравнивание адреса. | См.: 3.3.3.1 Выравнивание адреса. | ||
</PRE> | |||
== C! в предыдущем стандарте Forth-83 (англ.) == | == История == | ||
=== C! в предыдущем стандарте Forth-83 (англ.) === | |||
C! 16b addr -- 79 "c-store" | C! 16b addr -- 79 "c-store" | ||
The least-significant 8 bits of 16b are stored into the byte | The least-significant 8 bits of 16b are stored into the byte | ||
at addr. | at addr. | ||
== C! в стандарте Forth-79 (англ.) == | === C! в стандарте Forth-79 (англ.) === | ||
C! n addr -- 219 "c-store" | C! n addr -- 219 "c-store" | ||
Store the least significant 8-bits of n at addr. | Store the least significant 8-bits of n at addr. | ||
== C! в fig-FORTH Release 1 glossary, май 1979 (англ.) == | === C! в fig-FORTH Release 1 glossary, май 1979 (англ.) === | ||
C! b addr --- | C! b addr --- | ||
Store 8 bits at address. On word addressing computers, further | Store 8 bits at address. On word addressing computers, further | ||
Строка 34: | Строка 39: | ||
== Реализация == | == Реализация == | ||
<pre> | |||
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 | |||
</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> | |||
=== Советская реализация === | |||
Слово C! в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | Слово C! в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | ||
<PRE> | <PRE> | ||
Строка 66: | Строка 101: | ||
[[Категория:Примитивы]] | [[Категория:Примитивы]] | ||
[[Категория:Работа с памятью Каллисто]] | [[Категория:Работа с памятью Каллисто]] | ||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 CORE]] | |||
[[Категория:2012 CORE]] |
Текущая версия от 02:57, 19 января 2020
C! (записать байт, читается «си-присвоить») — стандартное слово Каллисто. Сохранить 8-битное число.
C! ( y a -- ) Записывает байт y по адресу a.
Записывает число y по адресу a.
Если a указывает на байтовую память (диапазон 11000…18167), двоичный байт y записывается по адресу a. В этом случае допустимые значения y от -128 до 255.
Если a в диапазоне от 10000 до 10999, запись y проводится в десятичный регистр.
Ввод слова 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 (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |