Редактирование:
S⟩D
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == <pre> 1443 ;#StoD 1444 ; S>D ( n −− u1 u2 ) Преобразовать 32−битное число n в пару 16−битных чисел u2 u1. 1445 ; Немного сложнее DUP 0< т.к. мы преобразовываем 12−разрядные десятичные числа, а не 16−битные двоичные. 1446 LSTOD: .DB 3 1447 .TEXT "S>D" ; ( n −− dd ) 1448 .DW LSWAB 1449 STOD: .DW JSTOD 1450 JSTOD: RM3 M8 KRM8 PGSB Norm32 1451 ENT ENT 65536 / FANS <−> KINT KM3 ∗ − KM8 KGOTO9 </pre> Реализация из SP-Forth 4.20: <pre> CODE S>D ( n -- d ) \ 94 \ Преобразовать число n в двойное число d с тем же числовым значением. CDQ LEA EBP, -4 [EBP] MOV [EBP], EAX MOV EAX, EDX RET END-CODE </pre> === Советская реализация === У Баранова-Ноздрунова приводится следующее определение слова S>D (стр. 29): : S>D ( A ---> AA ) ↑ 0< IF -1 ELSE 0 THEN ; Thinking Forth (стр. 242, Minimizing Control Structures) предлагает более быстрое решение: : s>d ( n -- d ) \ расширение со знаком s в d ↑ O< ; В ФОРТ-ЕС слово S>D было [[примитив]]ом. Вот его описание и определение: <PRE> S>D * N->D РАСШИРИТЬ N ДО ЧИСЛА ДВОЙНОЙ ДЛИНЫ D 14 Экран номер 14 ( 31.03.86 S>D DABS DNEGATE D+ D- DU< ) CODE S>D ( N->D ) RW1 PULL, PUSH2RW1 B, END-CODE </PRE> В FORTH ИТЭФ слово S>D называлось S->D и также было [[примитив]]ом, вот его определение (исправлена опечатка PUSH вместо PUS): <PRE> HEAD 204Q,'S->',304Q,STOD ; S->D POP AX PUSH AX MOV CX, DX ; Сохранение содержимого DX CWD PUSH DX MOV DX, CX ; Восстановление DX NEXT </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице