SP@: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показаны 23 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
'''SP@''' — | '''SP@''' (считать SP, читается «эс-пи извлечь») — фортовское слово [[Каллисто]]. | ||
SP@ ( −− a ) Считать SP. Адрес текущей вершины стека данных. | |||
Записывает в [[Стек данных|стек]] адрес вершины [[Стек данных|стека]], до исполнения команды [[SP@]] | |||
== Ввод слова SP@ == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре клавиши [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | |||
Эти нажатия оставляют клавиатуру в [[Режим NUM|режиме 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) | |||
== Реализация == | |||
<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@ из ФОРТ-ЕС: | |||
<PRE> | |||
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, | |||
</PRE> | |||
Определение SP@ из FORTH ИТЭФ: | |||
<PRE> | |||
ENDA: PUSH AX | |||
NEXT | |||
... | |||
HEAD 203Q,'SP',300Q,SPAT ; SP@ | |||
MOV AX, SP | |||
JMP ENDA | |||
</PRE> | |||
== Ссылки == | == Ссылки == | ||
* {{Исходник|SPFetch|SP@}} | |||
* См. слова [[!SP]] и [[S0]] | |||
* [https://en.wikipedia.org/wiki/Stack_register Stack register в английской Википедии] ''(англ.)'' | * [https://en.wikipedia.org/wiki/Stack_register Stack register в английской Википедии] ''(англ.)'' | ||
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\09.FUNKZIONIROWANIE%20FORT-SISTEMY ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | |||
* [http://www.forth.com/starting-forth/sf9/sf9.html Under the Hood] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
Строка 11: | Строка 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 (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |