R@: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) (→Ссылки) |
AtH (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 36: | Строка 36: | ||
== Реализация == | == Реализация == | ||
<pre> | |||
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 −− но для целых со знаком. | |||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
CODE R@ \ 94 | |||
\ Исполнение: ( -- x ) ( R: x -- x ) | |||
\ Интерпретация: семантика в режиме интерпретации неопределена. | |||
LEA EBP, -4 [EBP] | |||
MOV [EBP], EAX | |||
MOV EAX, 4 [ESP] | |||
RET | |||
END-CODE | |||
</pre> | |||
=== Советская реализация === | |||
Слово R@ в ФОРТ-ЕС и FORTH ИТЭФ было [[примитив]]ом. Вот его описание и определение в ФОРТ-ЕС: | Слово R@ в ФОРТ-ЕС и FORTH ИТЭФ было [[примитив]]ом. Вот его описание и определение в ФОРТ-ЕС: | ||
<PRE> | <PRE> | ||
Строка 72: | Строка 100: | ||
[[Категория:Стандартные слова]] | [[Категория:Стандартные слова]] | ||
[[Категория:1994 CORE]] | [[Категория:1994 CORE]] | ||
[[Категория:2012 CORE]] |
Текущая версия от 16:43, 10 ноября 2017
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$
Ссылки[править]
- Исходный текст слова R@ в Каллисто Классик 1.0
- См. слова R>, >R, RDROP, UNLOOP, I, J и K
- Слово R@ (r-fetch) в стандарте ANS Forth (англ.)
- Слово R@ (r-fetch) в черновике Forth 200x (англ.)
- ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- The Philosophy of Fixed Point в книге Leo Brodie Starting Forth (англ.)
- Throw It For a Loop в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |