S⟩D
S>D — стандартное слово Каллисто.
S>D ( n −− u1 u2 ) Преобразовывает 32−битное число n в пару 16−битных чисел u2 u1.
Слово S>D немного сложнее ↑ 0< т.к. мы преобразовываем 12−разрядное десятичное число n, а не 16−битное двоичное, как в Форте.
Ввод слова S>D[править]
В режиме ЛАТ последовательно нажмите клавиши 1 P F ИП Р-ГРД-Г K
S>D в стандарте ANS Forth[править]
6.1.2170 S>D "s-to-d" CORE ( n -- d ) Преобразовывает число n в число d две-ячейки с тем же самым числовым значением.
S->D в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
S->D n --- d Sign extend a single number to form a double number.
Реализация[править]
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
Реализация из SP-Forth 4.20:
CODE S>D ( n -- d ) \ 94 \ Преобразовать число n в двойное число d с тем же числовым значением. CDQ LEA EBP, -4 [EBP] MOV [EBP], EAX MOV EAX, EDX RET END-CODE
Советская реализация[править]
У Баранова-Ноздрунова приводится следующее определение слова 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 было примитивом. Вот его описание и определение:
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
В FORTH ИТЭФ слово S>D называлось S->D и также было примитивом, вот его определение (исправлена опечатка PUSH вместо PUS):
HEAD 204Q,'S->',304Q,STOD ; S->D POP AX PUSH AX MOV CX, DX ; Сохранение содержимого DX CWD PUSH DX MOV DX, CX ; Восстановление DX NEXT
Ссылки[править]
- Исходный текст слова S>D в Каллисто Классик 1.0
- Слово S>D (s-to-d) в стандарте ANS Forth (англ.)
- Слово S>D (s-to-d) в черновике Forth 200x (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |