!SP
!SP (восстановить SP, читается «присвоить эс-пи») — адаптированное слово Каллисто. Очистить стек.
!SP ( −− ) Восстановить SP. Присвоить указателю стека данных исходное значение из переменной S0.
Устанавливает указатель стека в исходное состояние из переменной S0.
Ввод слова !SP[править]
В режиме NUM последовательно нажмите четыре клавиши П Р-ГРД-Г 1 6
Для возврата в режим NUM нажмите синюю клавишу P .
История[править]
В Open Firmware это слово называется clear
По рекомендации Броуди восклицательный знак ставится в начале имени, если слово инициализирует нечто своим начальным значением. Каллисто придерживается этого удобного соглашения.
Вариант с присваиванием SP значения из стека менее надёжен и может натворить больше бед в случае ошибочного применения.
SP! в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
SP! A computer dependent proceedure to initialize the stack pointer from SO.
Реализация[править]
136 rrS0 .EQU 1131 ; 11131 S0 − Указатель начала стека параметров 137 rlS0 .EQU 1132 … 1740 ;#StoreSP 1741 ; !SP ( −− ) Восстановить SP. Присвоить указателю стека данных исходное значение из переменной S0. 1742 LSPSTO: .DB 3 1743 .TEXT "!SP" 1744 .DW LSPAT 1745 SPSTO: .DW JSPSTO ; Установить указатель стека в исходное состояние из переменной S0. 1746 JSPSTO: PPRM rrS0 RME ∗ PPRM rlS0 + ; Считать переменную S0 1747 1 EE 4 − M3 KGOTO9 ; SP := S0
Реализация в SP-Forth 4.20[править]
\ ================================================================ \ Указатели стеков CODE SP! ( A -> ) LEA EBP, 4 [EAX] MOV EAX, -4 [EBP] RET END-CODE
Советская реализация[править]
В ФОРТ-ЕС и FORTH ИТЭФ для установки указателя стека возвратов служил примитив SP! с одинаковым названием, но разным поведением.
Вот его описание и определение из ФОРТ-ЕС:
SP! * А-> УСТАНОВИТЬ УКАЗАТЕЛЬ ВЕРШИНЫ СТЕКА НА A 20 Экран номер 20 ( 31.03.86 SP@ SP! RP@ RP! 2/ 2* 2@ 2! DEPTH ) CODE SP! ( A->) RSTACK PULL, RSTACK RMASK NR, RSTACK RFORTH AR, RNEXT BR, END-CODE
Вот его определение из FORTH ИТЭФ:
HEAD 203Q,'SP',241Q,SPSTO ; SP! MOV SP, [DI]+6 NEXT
Ссылки[править]
- Исходный текст слова !SP в Каллисто Классик 1.0
- См. слова SP@ и S0
- Stack register в английской Википедии (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |