Редактирование: S⟩D

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''S>D''' — стандартное слово [[Каллисто]].
'''S>D''' — стандартное слово [[Каллисто]].
S>D            ( n −− u1 u2 )                      Преобразовывает 32−битное число n в пару 16−битных чисел u2 u1.
Слово S&gt;D немного сложнее ↑ 0< т.к. мы преобразовываем 12−разрядное [[десятичное число]] n, а не 16−битное двоичное, как в Форте.
 
== Ввод слова S&gt;D ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша 1|{{Серая клавиша|1}}]] &nbsp; [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] &nbsp; [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша K|{{Синяя клавиша|K}}]]
 
== S&gt;D в стандарте ANS Forth ==
6.1.2170  S>D                                "s-to-d"                    CORE
            ( n -- d )
            Преобразовывает число n в число d две-ячейки с тем же самым
            числовым значением.
 
== S-&gt;D в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
S->D          n  ---  d
        Sign extend a single number to form a double number.
 
== Реализация ==
<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&gt;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&gt;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&gt;D называлось S-&gt;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>
 
== Ссылки ==
* {{Исходник|StoD|S&gt;D}}
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2170 S&gt;D (s-to-d)] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/core/StoD S&gt;D (s-to-d)] в черновике Forth 200x ''(англ.)''
 


{{нет иллюстраций}}
{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Примитивы]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/S⟩D