SP@

Материал из ПМК вики
Перейти к: навигация, поиск

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

Ссылки[править]


  Nopictures-icon.png У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Stub-icon-48px.png Это заготовка статьи. Вы можете помочь проекту, дополнив её.