SP@: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показано 5 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''SP@''' (считать SP, читается «эс-пи извлечь») — | '''SP@''' (считать SP, читается «эс-пи извлечь») — фортовское слово [[Каллисто]]. | ||
SP@ ( −− a ) Считать SP. Адрес текущей вершины стека данных. | SP@ ( −− a ) Считать SP. Адрес текущей вершины стека данных. | ||
Записывает в [[Стек данных|стек]] адрес вершины [[Стек данных|стека]], до исполнения команды [[SP@]] | Записывает в [[Стек данных|стек]] адрес вершины [[Стек данных|стека]], до исполнения команды [[SP@]] | ||
Строка 8: | Строка 8: | ||
Эти нажатия оставляют клавиатуру в [[Режим NUM|режиме NUM]]. | Эти нажатия оставляют клавиатуру в [[Режим NUM|режиме NUM]]. | ||
== SP@ в предыдущем стандарте Forth-83 (англ.) == | == История == | ||
Это слово иногда называлось 'S (две литеры), но во всех стандартах, начиная с fig-Форта, получило устойчивое имя SP@ — под которым и вошло в [[Каллисто]]. | |||
Слово SP@ отсутствует в действующем стандарте ANS Forth и его нет в черновиках Форта-2012. | |||
=== SP@ в предыдущем стандарте Forth-83 (англ.) === | |||
SP@ -- addr 79 "s-p-fetch" | SP@ -- addr 79 "s-p-fetch" | ||
addr is the address of the top of the stack just before SP@ | addr is the address of the top of the stack just before SP@ | ||
was executed. | was executed. | ||
== SP@ в стандарте Forth-79 (англ.) == | === SP@ в стандарте Forth-79 (англ.) === | ||
SP@ -- addr 214 "s-p-fetch" | SP@ -- addr 214 "s-p-fetch" | ||
Return the address of the top of the stack, just before SP@ | Return the address of the top of the stack, just before SP@ | ||
was executed. | was executed. | ||
== SP@ в fig-FORTH Release 1 glossary, май 1979 (англ.) == | === SP@ в fig-FORTH Release 1 glossary, май 1979 (англ.) === | ||
SP@ --- addr | SP@ --- addr | ||
A computer dependent proceedure to return the address of the stack | A computer dependent proceedure to return the address of the stack | ||
Строка 26: | Строка 31: | ||
== Реализация == | == Реализация == | ||
<pre> | |||
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 | |||
</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@ из ФОРТ-ЕС: | ||
<PRE> | <PRE> | ||
Строка 45: | Строка 73: | ||
JMP ENDA | JMP ENDA | ||
</PRE> | </PRE> | ||
== Ссылки == | == Ссылки == | ||
Строка 63: | Строка 85: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Фортовские слова]] | |||
[[Категория:Примитивы]] | [[Категория:Примитивы]] |
Текущая версия от 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 (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |