Редактирование: SP@

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''SP@''' (считать SP, читается «эс-пи извлечь») — фортовское слово [[Каллисто]].
'''SP@''' (считать 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
Строка 31: Строка 26:


== Реализация ==
== Реализация ==
<pre>
Слово SP@ в ФОРТ-ЕС и FORTH ИТЭФ также было [[примитив]]ом. Вот его описание и определение из ФОРТ-ЕС:
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>
<PRE>
SP@    +  ->А АДРЕС ТЕКУЩЕЙ ВЕРШИНЫ СТЕКА ДАННЫХ              20
SP@    +  ->А АДРЕС ТЕКУЩЕЙ ВЕРШИНЫ СТЕКА ДАННЫХ              20
Строка 75: Строка 47:


== Ссылки ==
== Ссылки ==
* {{Исходник|SPFetch|SP@}}
* См. слова [[!SP]] и [[S0]]
* См. слова [[!SP]] и [[S0]]
* [https://en.wikipedia.org/wiki/Stack_register Stack register в английской Википедии] ''(англ.)''
* [https://en.wikipedia.org/wiki/Stack_register Stack register в английской Википедии] ''(англ.)''
Строка 85: Строка 56:
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Фортовские слова]]
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Слова Каллисто без стековых диаграмм]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/SP@