Редактирование:
2DUP
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == В [[Каллисто|Каллисто 1.0]] для экономии [[Память программ|памяти программ]] редко используемое слово 2DUP реализовано через [[примитив]] [[OVER]]: <pre> 1919 ;#TwoDUP 1920 ; 2DUP ( y x −− y x y x ) Дублировать пару чисел. 1921 LDUP2: .DB 4 1922 .TEXT "2DUP" ; ( dd −− dd dd ) 1923 .DW LQDUP 1924 DUP2: .DW CALL, OVER,OVER, EXIT ; Дублировать верхнюю пару элементов стека. </pre> Красиво это можно записать так: : 2DUP ( dd -- dd dd) OVER OVER ; Реализация из SP-Forth 4.20: <pre> CODE 2DUP ( x1 x2 -- x1 x2 x1 x2 ) \ 94 \ Продублировать пару ячеек x1 x2. MOV EDX, [EBP] MOV -4 [EBP], EAX MOV -8 [EBP], EDX LEA EBP, -8 [EBP] RET END-CODE </pre> === Советская реализация === В ФОРТ-ЕС слово 2DUP так и было определено, с целью лёгкой переносимости ядра: <PRE> 2DUP WD->WD,WD ПРОДУБЛИРОВАТЬ ДВОЙНОЕ ЗНАЧЕНИЕ 12 Экран номер 12 ( 31.03.86 ROLL PICK 2DUP 2DROP 2SWAP 2OVER 2ROT ) : 2DUP ( WD->WD,WD) OVER OVER ; </PRE> В FORTH ИТЭФ слово 2DUP было [[примитив]]ом, вот его определение: <PRE> HEAD 204Q,'2DU',320Q,DUP2 ; 2DUP POP AX POP CX PUSH CX PUSH AX PUSH CX PUSH AX NEXT </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице