⟩RESOLVE

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

>RESOLVE (разрешить) — фортовское слово Каллисто. Завершить компиляцию перехода вперёд.

>RESOLVE       ( a −− )                             Разрешить ссылку вперёд в адресе a.

Слово >RESOLVE снимает адрес, занесённый словом >MARK, со стека и вписывает в него ссылку на текущую вершину словаря в соответствии с требованиями BRANCH и ?BRANCH.

Ввод слова >RESOLVE

В режиме NUM последовательно нажмите клавиши  F   ИП     Р-ГРД-Г   ×   ИП   1   5         ИП 

Для возврата в режим NUM нажмите синюю клавишу  P .

>RESOLVE в предыдущем стандарте Forth-83 (англ.)

     >RESOLVE     addr --                       C,83 "forward-resolve"
          Used at the destination of a forward branch.  Calculates the
          branch address (to the current location in the dictionary)
          using addr and places this branch address into the space
          left by >MARK .

Реализация

3636 ;#FwdRESOLVE
3637 ; >RESOLVE         ( a −− )                             Разрешить ссылку вперёд в адресе a.
3638 LGRESOLVE:      .DB     8
3639                 .TEXT   ">RESOLVE"
3640                 .DW     LGMARK
3641 GRESOLVE:       .DW CALL
3642 RGRESOLVE:      .DW HERE, LITP
3643                 .DB 39,17                       ; 10001
3644                 .DW SUB, SWAP, STORE, EXIT

Реализация из SP-Forth 4.20:

: >RESOLVE1 ( A -> )
  HERE OVER - 4 -
  SWAP !
;

: >RESOLVE ( A, N -- )
  DUP 1 = IF   DROP >RESOLVE1
          ELSE 2 <> IF -2007 THROW THEN \ ABORT" Conditionals not paired"
               >RESOLVE1
          THEN
;

Советская реализация

Описание и определение слова >RESOLVE в ядре ФОРТ-ЕС:

>RESOLVE К А-> РАЗРЕШИТЬ ССЫЛКУ ВПЕРЕД В АДРЕСЕ А               19

                     Экран номер 19
( 31.03.86   СРАВНЕНИЯ И РАЗРЕШЕНИЯ В ШИТОМ КОДЕ)

: >RESOLVE ( A->) HERE SWAP ! ;

Ссылки


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


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