Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте или
создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Правка может быть отменена.
Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия |
Ваш текст |
Строка 51: |
Строка 51: |
|
| |
|
| == Реализация == | | == Реализация == |
| <pre>
| |
| 1983 ;#CMOVEtop
| |
| 1984 ; CMOVE> ( a1 a2 U −− ) Копировать U байтов из a1 в a2, начиная с больших адресов.
| |
| 1985 LCMOVEG: .DB 6
| |
| 1986 .TEXT "CMOVE>" ; ( откуда куда сколько −− )
| |
| 1987 .DW LCMOVE
| |
| 1988 CMOVEG: .DW JCMOVEG
| |
| 1989 JCMOVEG: PKRM03 M0 ; Счётчик
| |
| 1990 RM3 1 + MB 1 + MA 1 + M3 M8 ; R8 := SP (R3)
| |
| 1991 KRMB 1 EE 4 − KX>=09
| |
| 1992 RM0 +/− KX<09 − M1 ; R1 := Куда, конец блока
| |
| 1993 KRMA MA 1 EE 4 − FX<0 CMVGR0
| |
| 1994 RMA RM0 +
| |
| 1995 CMVGP: MA KPRGM KM1 RMA 1 − FL0 CMVGP KGOTO9
| |
| 1996 CMVGR0: RM0 + M3
| |
| 1997 CMVGRL: Cx KRM3 KM1 FL0 CMVGRL
| |
| 1998 RM8 M3 KGOTO9 ; R3 (SP) := R8
| |
| </pre>
| |
| Реализация из SP-Forth 4.20:
| |
| <pre>
| |
| CODE CMOVE> ( c-addr1 c-addr2 u -- ) \ 94 STRING
| |
| \ Если u больше нуля, копировать u последовательных символов из пространства
| |
| \ данных начиная с адреса c-addr1 в c-addr2, символ за символом, начиная со
| |
| \ старших адресов к младшим.
| |
| MOV EDX, EDI
| |
| MOV ECX, EAX
| |
| MOV EDI, [EBP]
| |
| MOV ESI, 4 [EBP]
| |
| STD
| |
| ADD EDI, ECX
| |
| DEC EDI
| |
| ADD ESI, ECX
| |
| DEC ESI
| |
| REP MOVS BYTE
| |
| CLD
| |
| MOV EDI, EDX
| |
| LEA EBP, 0C [EBP]
| |
| MOV EAX, -4 [EBP]
| |
| RET
| |
| END-CODE
| |
| </pre>
| |
|
| |
| === Советская реализация ===
| |
| Слово CMOVE> в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | | Слово CMOVE> в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: |
| <PRE> | | <PRE> |
Строка 122: |
Строка 79: |
| [[Категория:Примитивы]] | | [[Категория:Примитивы]] |
| [[Категория:Работа с памятью Каллисто]] | | [[Категория:Работа с памятью Каллисто]] |
| [[Категория:Стандартные слова]]
| |
| [[Категория:1994 STRING]]
| |
| [[Категория:2012 STRING]]
| |