SP@: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
Строка 43: | Строка 43: | ||
1738 SPAT0: 1 EE 4 + KM3 KGOTO9 | 1738 SPAT0: 1 EE 4 + KM3 KGOTO9 | ||
</pre> | </pre> | ||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
CODE SP@ ( -> A ) | |||
LEA EBP, -4 [EBP] | |||
MOV [EBP], EAX | |||
MOV EAX, EBP | |||
RET | |||
END-CODE | |||
</pre> | |||
=== Советская реализация === | === Советская реализация === | ||
Слово SP@ пришло в [[Каллисто]] из ФОРТ-ЕС и FORTH ИТЭФ, где также было [[примитив]]ом. Вот описание и определение SP@ из ФОРТ-ЕС: | Слово SP@ пришло в [[Каллисто]] из ФОРТ-ЕС и FORTH ИТЭФ, где также было [[примитив]]ом. Вот описание и определение SP@ из ФОРТ-ЕС: |
Текущая версия от 17:12, 10 ноября 2017
SP@ (считать SP, читается «эс-пи извлечь») — фортовское слово Каллисто.
SP@ ( −− a ) Считать SP. Адрес текущей вершины стека данных.
Записывает в стек адрес вершины стека, до исполнения команды SP@
Ввод слова SP@[править]
В режиме ЛАТ последовательно нажмите четыре клавиши 1 6 P ИП
Эти нажатия оставляют клавиатуру в режиме NUM.
История[править]
Это слово иногда называлось 'S (две литеры), но во всех стандартах, начиная с fig-Форта, получило устойчивое имя SP@ — под которым и вошло в Каллисто.
Слово SP@ отсутствует в действующем стандарте ANS Forth и его нет в черновиках Форта-2012.
SP@ в предыдущем стандарте Forth-83 (англ.)[править]
SP@ -- addr 79 "s-p-fetch" addr is the address of the top of the stack just before SP@ was executed.
SP@ в стандарте Forth-79 (англ.)[править]
SP@ -- addr 214 "s-p-fetch" Return the address of the top of the stack, just before SP@ was executed.
SP@ в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
SP@ --- addr A computer dependent proceedure to return the address of the stack position to the top of the stack, as it was before SP@ was executed. (e.g. 1 2 SP@ @ . . . would type 2 2 1)
Реализация[править]
1729 ; ∗∗∗ Стек ∗∗∗ 1730 ; 1731 ;#SPFetch 1732 ; SP@ ( −− a ) Считать SP. Адрес текущей вершины стека данных. 1733 LSPAT: .DB 3 1734 .TEXT "SP@" 1735 .DW LTG 1736 SPAT: .DW JSPAT ; Положить на стек адрес вершины стека, до исполнения команды SP@ 1737 JSPAT: RM3 1738 SPAT0: 1 EE 4 + KM3 KGOTO9
Реализация из SP-Forth 4.20:
CODE SP@ ( -> A ) LEA EBP, -4 [EBP] MOV [EBP], EAX MOV EAX, EBP RET END-CODE
Советская реализация[править]
Слово SP@ пришло в Каллисто из ФОРТ-ЕС и FORTH ИТЭФ, где также было примитивом. Вот описание и определение SP@ из ФОРТ-ЕС:
SP@ + ->А АДРЕС ТЕКУЩЕЙ ВЕРШИНЫ СТЕКА ДАННЫХ 20 Экран номер 20 ( 31.03.86 SP@ SP! RP@ RP! 2/ 2* 2@ 2! DEPTH ) CODE SP@ ( ->A) RW1 RSTACK LR, RW1 RFORTH SR, PUSHRW1 B,
Определение SP@ из FORTH ИТЭФ:
ENDA: PUSH AX NEXT ... HEAD 203Q,'SP',300Q,SPAT ; SP@ MOV AX, SP JMP ENDA
Ссылки[править]
- Исходный текст слова SP@ в Каллисто Классик 1.0
- См. слова !SP и S0
- Stack register в английской Википедии (англ.)
- ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Under the Hood в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |