Редактирование:
ROT
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == <pre> 1926 ;#ROT 1927 ; ROT ( z y x −− y x z ) Вращать. Перенести наверх третий сверху. 1928 LROT: .DB 3 1929 .TEXT "ROT" ; ( a b c −− b c a ) 1930 .DW LDUP2 1931 ROT: .DW JROT ; Перенести 3−й элемент стека наверх. ("Вращение трёх верхних элементов по часовой стрелке.") 1932 JROT: RM3 M8 M5 1933 KRM5 KRM8 PKM05 <−> 1934 KRM5 KM8 <−> 1935 PKM05 1936 KGOTO9 1937 ; x1 x2 x3 −− a b c = x2 x3 x1 1938 ; 1939 ; T | 1940 ; Z | x3 x3 x3 x3 1941 ; Y | x2 x2 x3 x2 x2 x1 x1 1942 ; X | x2 x3 b:=x3 x2 x1 c:=x1 x2 a:=x2 1943 ; −−+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 1944 ; KRM5 KRM8 PKM05 <−> KRM5 KM8 <−> PKM05 </pre> Следующий вариант реализации использует на один регистр и одну команду меньше, зато длиннее на один шаг. Если он окажется быстрее, реализацию ROT можно заменить на следующую: CODE ROT ( z y x -- y x z ) ИП3 П5 КИП5 РКИП03 РКП05 ↔ КИП5 РКП03 ↔ РКП05 КБП9 END-CODE Реализации из SP-Forth 4.20: <pre> CODE ROT ( x1 x2 x3 -- x2 x3 x1 ) \ 94 \ Прокрутить три верхних элемента стека. MOV EDX, [EBP] MOV [EBP], EAX MOV EAX, 4 [EBP] MOV 4 [EBP], EDX RET END-CODE </pre> <pre> CODE FROT \ * FXCH ST(2) FXCH ST(1) FXCH ST(2) FXCH ST(1) RET END-CODE </pre> === Советская реализация === Определение слова ROT в ядре ФОРТ-ЕС использует [[стек возвратов]]: <PRE> ROT W1,W2,W3->W2,W3,W1 ПЕРЕСТАВИТЬ ТРИ 9 ВЕРХНИХ ЗНАЧЕНИЯ ПО ЧАСОВОЙ СТРЕЛКЕ Экран номер 9 ( 31.03.86 DUP ?DUP DROP SWAP OVER >R R> R@ RDROP ROT ) : ROT ( N1,N2,N3->N2,N3,N1 ) >R SWAP R> SWAP ; </PRE> В FORTH ИТЭФ слово ROT было [[примитив]]ом, вот его определение: <PRE> HEAD 203Q,'RO',324Q,ROT ; ROT POP AX POP CX POP BX PUSH CX PUSH AX PUSH BX NEXT </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице