!RP
!RP (восстановить RP, читается «присвоить ар-пи») — адаптированное слово Каллисто. Очистить стек возвратов.
!RP ( −− ) Восстановить RP. Присвоить указателю стека возвратов исходное значение из переменной R0.
Присваивает указателю стека возвратов исходное (базовое) значение из переменной R0.
Маленькие хитрости[править]
Будьте внимательны — при переустановке указателя стека возвратов адресному интерпретатору будет некуда возвращаться! Поэтому после !RP рекомендуется использовать слово QUIT для передачи управления на пульт — которое, кстати, само содержит вызов !RP.
Для установки RP на произвольное значение перед !RP запишите требуемое значение в переменную R0.
Ввод слова !RP[править]
В режиме NUM последовательно нажмите четыре клавиши П Р-ГРД-Г × 6
Для возврата в режим NUM нажмите синюю клавишу P .
История[править]
По рекомендации Броуди восклицательный знак ставится в начале имени, если слово инициализирует нечто своим начальным значением. Каллисто придерживается этого удобного соглашения.
Вариант с присваиванием RP значения из стека менее надёжен и может натворить больше бед в случае ошибочного применения.
RP! в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
RP! A computer dependent proceedure to initialize the return stack pointer from user variable R0.
Реализация[править]
139 rrR0 .EQU 1133 ; 11133 R0 − Указатель начала стека возвратов 140 rlR0 .EQU 1134 … 1759 ;#StoreRP 1760 ; !RP ( −− ) Восстановить RP. Присвоить указателю стека возвратов исходное значение из переменной R0. 1761 LRPSTO: .DB 3 1762 .TEXT "!RP" 1763 .DW LRPAT 1764 RPSTO: .DW JRPSTO ; Присвоить указателю стека возвратов исходное (базовое) значение из переменной R0. 1765 JRPSTO: PPRM rrR0 RME ∗ PPRM rlR0 + ; Считать переменную R0 1766 1 EE 4 − M2 KGOTO9 ; RP := R0
Реализация из SP-Forth 4.20:
CODE RP! ( A -> ) POP EBX MOV ESP, EAX MOV EAX, [EBP] LEA EBP, 4 [EBP] JMP EBX END-CODE
Советская реализация[править]
В ФОРТ-ЕС и FORTH ИТЭФ для установки указателя стека возвратов служил примитив RP! с одинаковым названием, но разным поведением.
Вот описание и определение RP! в ядре ФОРТ-ЕС:
RP! * A-> УСТАНОВИТЬ УКАЗАТЕЛЬ ВЕРШИНЫ СТЕКА 20 ВОЗВРАТОВ НА A Экран номер 20 ( 31.03.86 SP@ SP! RP@ RP! 2/ 2* 2@ 2! DEPTH ) CODE RP! ( A->) RRET POP, RRET RMASK NR, RRET RFORTH AR, RNEXT BR, END-CODE
Вот определение RP! в FORTH ИТЭФ:
HEAD 203Q,'RP',241Q,RPSTO ; RP! MOV BP, $RS NEXT
Ссылки[править]
- Исходный текст слова !RP в Каллисто Классик 1.0
- См. слова RP@ и R0
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |