⟩R: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) (→Ссылки) |
AtH (обсуждение | вклад) |
||
Строка 40: | Строка 40: | ||
== Реализация == | == Реализация == | ||
<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> | |||
=== Советская реализация === | |||
Слово >R в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | Слово >R в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | ||
<PRE> | <PRE> |
Версия от 14:15, 9 ноября 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
Советская реализация
Слово >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 (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |