⟩R: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 60: | Строка 60: | ||
Реализации из SP-Forth 4.20: | Реализации из SP-Forth 4.20: | ||
<pre> | <pre> | ||
CODE1 >R \ 94 | CODE1 >R \ 94 | ||
\ Исполнение: ( x -- ) ( R: -- x ) | \ Исполнение: ( x -- ) ( R: -- x ) | ||
Строка 77: | Строка 70: | ||
JMP EBX | JMP EBX | ||
;C | ;C | ||
</pre> | |||
<pre> | |||
CODE C->R \ 94 | |||
PUSH EAX | |||
MOV EAX, [EBP] | |||
LEA EBP, 4 [EBP] | |||
RET | |||
END-CODE | |||
… | … | ||
: >R ['] C->R INLINE, ; IMMEDIATE | : >R ['] C->R INLINE, ; IMMEDIATE |
Текущая версия от 21:45, 13 ноября 2017
>R (на стек возвратов, читается «на ар») — стандартное слово Каллисто.
>R ( d −− ) Перенести d на стек возвратов.
Переносит 16-битное число из стека данных в стек возвратов.
Ввод слова >R[править]
В режиме NUM последовательно нажмите четыре клавиши F ИП Р-ГРД-Г ×
Для возврата в режим NUM нажмите синюю клавишу P .
>R в стандарте ANS Forth[править]
6.1.0580 >R "to-r" CORE Интерпретация: Семантика интерпретации для этого слова не определена. Выполнение: ( x -- ) ( R: -- x ) Перемещает x на стек возвратов. См.: 3.2.3.3 Стек возвратов, 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, 6.2.0410 2R>, 6.2.0415 2R@.
История[править]
В Форте стек возвратов часто использовался, как удобное и быстрое промежуточное хранилище для чисел со стека данных. Для фортовских 16-битных целых этот трюк всё ещё действует, однако в Каллисто стек данных хранит десятичные числа. Поэтому в Каллисто подобный трюк может привести к потере точности и не рекомендуется.
>R в предыдущем стандарте Forth-83 (англ.)[править]
>R 16b -- C,79 "to-r" Transfers 16b to the return stack. See "9.3 Return Stack"
>R в стандарте Forth-79 (англ.)[править]
>R n -- C,200 "to-r" Transfer n to the return stack. Every >R must be balanced by a R> in the same control structure nesting level of a colon- definition.
>R в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
>R n --- C,L0 Remove a number from the computation stack and place as the most accessable on the return stack. Use should be balanced with R> in the same definition.
Реализация[править]
1794 ;#toR 1795 ; >R ( d −− ) Перенести d на стек возвратов. 1796 LTOR: .DB 2 1797 .TEXT ">R" ; ( n −− ) ( R: −− n ) 1798 .DW LUNLOOP 1799 TOR: .DW JTOR ; Перенести 16−битное целое из стека данных на стек возвратов. 1800 JTOR: PKRM03 KINT 1801 FX<0 TOR1 1802 65536 + 1803 TOR1: RME / ENT KFRAC RME ∗ KM2 ; На эмуляторах может возникнуть ошибка округления 1804 FR KINT KM2 1805 PGOTO JDROP … 2052 JDROP: 1 ; Да, это обработчик DROP 2053 NDROP: RM3 + M3 ; А сюда сваливается 2DROP 2054 KGOTO9
Реализации из SP-Forth 4.20:
CODE1 >R \ 94 \ Исполнение: ( x -- ) ( R: -- x ) \ Перенести x на стек возвратов. \ Интерпретация: семантика в режиме интерпретации не определена. POP EBX PUSH EAX MOV EAX, [EBP] LEA EBP, 4 [EBP] JMP EBX ;C
CODE C->R \ 94 PUSH EAX MOV EAX, [EBP] LEA EBP, 4 [EBP] RET END-CODE … : >R ['] C->R INLINE, ; IMMEDIATE
: >R \ 94 ?COMP S" C->R" TC-FINDOUT INLINE, ; IMMEDIATE
Советская реализация[править]
Слово >R в ФОРТ-ЕС было примитивом. Вот его описание и определение:
>R К W-> ПЕРЕНЕСТИ W НА СТЕК ВОЗВРАТОВ 9 Экран номер 9 ( 31.03.86 DUP ?DUP DROP SWAP OVER >R R> R@ RDROP ROT ) CODE >R ( W-> ) RW1 POP, RW1 RPUSH, RNEXT BR, END-CODE
В FORTH ИТЭФ слово >R также было примитивом, вот его определение:
HEAD 202Q,'>',322Q,TOR ; >R SUB BP, 2 POP [BP] NEXT
Ссылки[править]
- Исходный текст слова >R в Каллисто Классик 1.0
- См. слова R@, R>, RDROP, UNLOOP, I, J и K
- Слово >R (to-r) в стандарте ANS Forth (англ.)
- Слово >R (to-r) в черновике Forth 200x (англ.)
- ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- The Philosophy of Fixed Point в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |