R⟩

Материал из ПМК вики
Версия от 21:45, 13 ноября 2017; AtH (обсуждение | вклад) (→‎Реализация)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

R> (со стека возвратов, «с ар») — стандартное слово Каллисто.

R>             ( −− D )                             Перемещает D из стека возвратов на стек данных.

Переносит 16-битное число D из стека возвратов в стек данных.

Ввод слова R>[править]

В режиме ЛАТ последовательно нажмите четыре клавиши  ×     P   F   ИП 

Эти нажатия оставляют клавиатуру в режиме NUM.

Маленькие хитрости[править]

Для чтения беззнакового значения со стека возвратов используйте фразу I RDROP

R> в стандарте ANS Forth[править]

 6.1.2060   R>                                "r-from"                      CORE
        Интерпретация: Семантика интерпретации для этого слова не определена.

        Выполнение: ( -- x )  ( R:  x -- )
            Перемещает x из стека возвратов на стек данных.

        См.: 3.2.3.3 Стек возвратов, 6.1.0580 >R, 6.1.2070 R@, 6.2.0340 2>R, 
            6.2.0410 2R>, 6.2.0415 2R@.

История[править]

R> в предыдущем стандарте Forth-83 (англ.)[править]

     R>           -- 16b                        C,79          "r-from"
          16b is removed from the return stack and transferred to the
          data stack.  See:  "9.3 Return Stack"

R> в стандарте Forth-79 (англ.)[править]

R>             -- n                          C,110         "r-from"
    Transfer n from the return stack to the data stack.

R> в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

R>             ---  n                            L0
       Remove the top value from the return stack and leave it on the
       computation stack. See >R and R.

Реализация[править]

1807 ;#Rfrom
1808 ; R>               ( −− D )                             Переместить D из стека возвратов на стек данных.
1809 LFROMR:         .DB     2
1810                 .TEXT   "R>"                    ; ( −− n )  ( R: n −− )
1811                 .DW     LTOR
1812 FROMR:          .DW     JFROMR                  ; Перенести 16−битное целое со знаком из стека возвратов на стек данных.
1813 JFROMR:         RM2 MA M5  2 + M2
1814 JFR2:           KRMA RME ∗ KRM5 + M0
1815                 32768 −
1816                 FX>=0 FROMR1
1817                 FANS − KM3  KGOTO9
1818 FROMR1:         RM0 KM3  KGOTO9

Реализации из SP-Forth 4.20:

CODE1 R>    \ 94
\ Исполнение: ( -- x ) ( R: x -- )
\ Перенести x со стека возвратов на стек данных.
\ Интерпретация: семантика в режиме интерпретации не определена.
     LEA EBP, -4 [EBP]
     MOV [EBP], EAX
     POP EBX
     POP EAX
     JMP EBX
;C
CODE C-R>    \ 94
     LEA  EBP, -4 [EBP]
     MOV  [EBP],  EAX
     POP EAX
     RET
END-CODE
…
: R>     ['] C-R>    INLINE, ;   IMMEDIATE
: R>
  ?COMP
  S" C-R>" TC-FINDOUT INLINE, ;   IMMEDIATE

Советская реализация[править]

Слово R> в ФОРТ-ЕС было примитивом. Вот его описание и определение:

R>       К   ->W ПЕРЕНЕСТИ ЗНАЧЕНИЕ СО СТЕКА ВОЗВРАТОВ           9

                      Экран номер 9
( 31.03.86   DUP ?DUP DROP SWAP OVER >R R> R@ RDROP ROT )

CODE R> ( ->W)    RW1 RPOP,  PUSHRW1 B,  END-CODE

В FORTH ИТЭФ слово R> также было примитивом, вот его определение:

	    HEAD     202Q 'R',276Q,FROMR                  ; R>
	    PUSH [BP]
            ADD  BP, 2
            NEXT

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.