R@

Материал из ПМК вики
Перейти к навигации Перейти к поиску

R@ (извлечь возврат, читается «ар-извлечь») — стандартное слово Каллисто.

R@             ( −− D )                             Скопировать значение D со стека возвратов.

Копирует верхнее 16-битное целое со знаком из стека возвратов в стек данных.

Если вам нужно достать со стека возвратов беззнаковое целое, используйте слово I.

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

В режиме ЛАТ нажмите  ×     P   ИП 

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

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

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

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

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

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

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

     R@           -- 16b                        C,79         "r-fetch"
          16b is a copy of the top of the return stack.

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

R@             -- n                          C,228        "r-fetch"
    Copy the number on top of the return stack to the data stack.

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

R               ---  n
       Copy the top of the return stack to the computation stack.

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

1814 JFR2:           KRMA RME ∗ KRM5 + M0
1815                 32768 −
1816                 FX>=0 FROMR1
1817                 FANS − KM3  KGOTO9
1818 FROMR1:         RM0 KM3  KGOTO9
1819 
1820 ;#RFetch
1821 ; R@               ( −− D )                             Скопировать значение D со стека возвратов.
1822 LRAT:           .DB     2
1823                 .TEXT   "R@"                    ; ( −− n )
1824                 .DW     LFROMR
1825 RAT:            .DW     JR
1826 JR:             RM2 MA M5  GOTO JFR2            ; Тоже, что и I −− но для целых со знаком.

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

CODE R@ \ 94
\ Исполнение: ( -- x ) ( R: x -- x )
\ Интерпретация: семантика в режиме интерпретации неопределена.
     LEA EBP, -4 [EBP]
     MOV [EBP], EAX
     MOV EAX, 4 [ESP]
     RET
END-CODE

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

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

R@       К   ->W СКОПИРОВАТЬ ВЕРШИНУ СТЕКА ВОЗВРАТОВ             9

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

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

В FORTH ИТЭФ примитив R@ назывался R и также был синонимом слова I. Вот его определение:

            HEAD     201Q,,311Q,I                         ; I
  RR$:      PUSH [BP]
  Z$:       NEXT

            HEAD     201Q,,322Q,R                         ; R
            JMP  RR$

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


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


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