Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте или
создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Правка может быть отменена.
Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия |
Ваш текст |
Строка 27: |
Строка 27: |
|
| |
|
| == Реализация == | | == Реализация == |
| <pre>
| |
| 1891 ;#TwoSWAP
| |
| 1892 ; 2SWAP ( t z y x −− y x t z ) Обменять две пары.
| |
| 1893 LDSWAP: .DB 5
| |
| 1894 .TEXT "2SWAP" ; ( dd1 dd2 −− dd2 dd1 )
| |
| 1895 .DW LSWAP
| |
| 1896 DSWAP: .DW JDSWAP ; Поменять местами верхние две пары чисел в стеке.
| |
| 1897 JDSWAP: RM3 M8 2 + MA
| |
| 1898 KRMA KRM8 KMA <−> KM8
| |
| 1899 RM3 1 + M8 2 + MA
| |
| 1900 KRMA KRM8 KMA <−> KM8
| |
| 1901 KGOTO9
| |
| </pre>
| |
| Реализация из SP-Forth 4.20:
| |
| <pre>
| |
| CODE 2SWAP ( x1 x2 x3 x4 -- x3 x4 x1 x2 ) \ 94
| |
| \ Поменять местами две верхние пары ячеек.
| |
| MOV ECX, [EBP]
| |
| MOV EDX, 4 [EBP]
| |
| MOV EBX, 8 [EBP]
| |
| MOV 8 [EBP], ECX
| |
| MOV 4 [EBP], EAX
| |
| MOV [EBP], EBX
| |
| MOV EAX, EDX
| |
| RET
| |
| END-CODE
| |
| </pre>
| |
|
| |
| === Советская реализация ===
| |
| В ядре ФОРТ-ЕС слово 2SWAP было определено через [[примитив]] ROLL | | В ядре ФОРТ-ЕС слово 2SWAP было определено через [[примитив]] ROLL |
| <PRE> | | <PRE> |