⟩R: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показано 11 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''>R''' (читается «на ар») — стандартное слово [[Каллисто]]. | '''>R''' (на стек возвратов, читается «на ар») — стандартное слово [[Каллисто]]. | ||
>R ( d −− ) Перенести d на стек возвратов. | >R ( d −− ) Перенести d на стек возвратов. | ||
Переносит 16-битное число из [[Стек данных|стека данных]] в [[Стек возвратов Каллисто|стек возвратов]]. | Переносит 16-битное число из [[Стек данных|стека данных]] в [[Стек возвратов Каллисто|стек возвратов]]. | ||
Строка 9: | Строка 9: | ||
== >R в стандарте ANS Forth == | == >R в стандарте ANS Forth == | ||
<PRE> | |||
6.1.0580 >R "to-r" CORE | 6.1.0580 >R "to-r" CORE | ||
Интерпретация: Семантика интерпретации для этого слова не определена. | Интерпретация: Семантика интерпретации для этого слова не определена. | ||
Строка 17: | Строка 18: | ||
См.: 3.2.3.3 Стек возвратов, 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, | См.: 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@. | 6.2.0410 2R>, 6.2.0415 2R@. | ||
</PRE> | |||
== История == | |||
В Форте [[Стек возвратов Каллисто|стек возвратов]] часто использовался, как удобное и быстрое промежуточное хранилище для чисел со [[Стек данных|стека данных]]. Для фортовских 16-битных целых этот трюк всё ещё действует, однако в [[Каллисто]] [[стек данных]] хранит [[Десятичное число|десятичные числа]]. Поэтому в [[Каллисто]] подобный трюк может привести к потере точности и не рекомендуется. | |||
== >R в предыдущем стандарте Forth-83 (англ.) == | === >R в предыдущем стандарте Forth-83 (англ.) === | ||
>R 16b -- C,79 "to-r" | >R 16b -- C,79 "to-r" | ||
Transfers 16b to the return stack. See "9.3 Return Stack" | Transfers 16b to the return stack. See "9.3 Return Stack" | ||
== >R в стандарте Forth-79 (англ.) == | === >R в стандарте Forth-79 (англ.) === | ||
>R n -- C,200 "to-r" | >R n -- C,200 "to-r" | ||
Transfer n to the return stack. Every >R must be balanced by | Transfer n to the return stack. Every >R must be balanced by | ||
Строка 28: | Строка 33: | ||
definition. | definition. | ||
== >R в fig-FORTH Release 1 glossary, май 1979 (англ.) == | === >R в fig-FORTH Release 1 glossary, май 1979 (англ.) === | ||
>R n --- C,L0 | >R n --- C,L0 | ||
Remove a number from the computation stack and place as the most | Remove a number from the computation stack and place as the most | ||
Строка 34: | Строка 39: | ||
the same definition. | the same definition. | ||
== | == Реализация == | ||
<pre> | |||
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 | |||
</pre> | |||
Реализации из SP-Forth 4.20: | |||
<pre> | |||
CODE1 >R \ 94 | |||
\ Исполнение: ( x -- ) ( R: -- x ) | |||
\ Перенести x на стек возвратов. | |||
\ Интерпретация: семантика в режиме интерпретации не определена. | |||
POP EBX | |||
PUSH EAX | |||
MOV EAX, [EBP] | |||
LEA EBP, 4 [EBP] | |||
JMP EBX | |||
;C | |||
</pre> | |||
<pre> | |||
CODE C->R \ 94 | |||
PUSH EAX | |||
MOV EAX, [EBP] | |||
LEA EBP, 4 [EBP] | |||
RET | |||
END-CODE | |||
… | |||
: >R ['] C->R INLINE, ; IMMEDIATE | |||
</pre> | |||
<pre> | |||
: >R \ 94 | |||
?COMP | |||
S" C->R" TC-FINDOUT INLINE, ; IMMEDIATE | |||
</pre> | |||
== | === Советская реализация === | ||
Слово >R в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | Слово >R в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | ||
<PRE> | <PRE> | ||
Строка 57: | Строка 107: | ||
== Ссылки == | == Ссылки == | ||
* {{Исходник|toR|>R}} | * {{Исходник|toR|>R}} | ||
* См. слова [[R@]], [[R⟩|R>]], [[RDROP]], [[UNLOOP]], [[Слово I|I]], [[Слово J|J]] и [[Слово K|K]] | |||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0580 >R (to-r)] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0580 >R (to-r)] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http://forth-standard.org/standard/core/toR >R (to-r)] в черновике Forth 200x ''(англ.)'' | * Слово [http://forth-standard.org/standard/core/toR >R (to-r)] в черновике Forth 200x ''(англ.)'' | ||
Строка 68: | Строка 119: | ||
[[Категория:Примитивы]] | [[Категория:Примитивы]] | ||
[[Категория:Операции со стеком возвратов Каллисто]] | [[Категория:Операции со стеком возвратов Каллисто]] | ||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 CORE]] | |||
[[Категория:2012 CORE]] |
Текущая версия от 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 (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |