Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''>RESOLVE''' (разрешить) — фортовское слово [[Каллисто]]. Завершить компиляцию перехода вперёд. | | '''>RESOLVE''' — стандартное слово [[Каллисто]]. |
| >RESOLVE ( a −− ) Разрешить ссылку вперёд в адресе a.
| |
| | |
| Слово >RESOLVE снимает со [[Стек данных|стека]] [[Единое адресное пространство|адрес]], занесённый туда словом [[⟩MARK|>MARK]], и вписывает по этому адресу ссылку на текущую вершину [[Словарь|словаря]] в соответствии с требованиями [[BRANCH]] и [[?BRANCH]].
| |
| | |
| == Ввод слова >RESOLVE ==
| |
| В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша ↔|{{Серая клавиша|↔}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
| |
| | |
| Для возврата в [[режим NUM]] нажмите [[Клавиша P|синюю клавишу {{Синяя клавиша|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 .
| |
| | |
| == Реализация ==
| |
| <pre>
| |
| 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
| |
| </pre>
| |
| | |
| === Реализации в SP-Forth 4.20 ===
| |
| <pre>
| |
| : >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
| |
| ;
| |
| </pre>
| |
| <pre>
| |
| : TC>RESOLVE1 ( A -> )
| |
| DUP
| |
| DP @ DUP TO :-SET
| |
| OVER - 4 -
| |
| SWAP !
| |
| \ J_OPT? IF ." R=" BASE @ HEX LAST-HERE U. DP @ U. BASE ! THEN
| |
| RESOLVE_OPT
| |
| | |
| ;
| |
| | |
| : TC>RESOLVE ( A, N -- )
| |
| DUP 1 = IF DROP TC>RESOLVE1
| |
| ELSE 2 <> IF -2007 THROW THEN \ ABORT" Conditionals not paired"
| |
| TC>RESOLVE1
| |
| THEN
| |
| ;
| |
| </pre>
| |
| <pre>
| |
| : >ORESOLVE1 ( A -> )
| |
| ?SET
| |
| DUP
| |
| DP @ DUP TO :-SET
| |
| OVER - 4 -
| |
| SWAP !
| |
| RESOLVE_OPT
| |
| ;
| |
| | |
| : >ORESOLVE ( A, N -- )
| |
| DUP 1 = IF DROP >ORESOLVE1
| |
| ELSE 2 <> IF -2007 THROW THEN \ ABORT" Conditionals not paired"
| |
| >ORESOLVE1
| |
| THEN
| |
| ;
| |
| </pre>
| |
| | |
| === Советская реализация ===
| |
| Описание и определение слова >RESOLVE в ядре ФОРТ-ЕС:
| |
| <PRE>
| |
| >RESOLVE К А-> РАЗРЕШИТЬ ССЫЛКУ ВПЕРЕД В АДРЕСЕ А 19
| |
| | |
| Экран номер 19
| |
| ( 31.03.86 СРАВНЕНИЯ И РАЗРЕШЕНИЯ В ШИТОМ КОДЕ)
| |
| | |
| : >RESOLVE ( A->) HERE SWAP ! ;
| |
| </PRE>
| |
| | |
| == Ссылки ==
| |
| * {{Исходник|FwdRESOLVE|>RESOLVE}}
| |
| * См. слова [[⟨MARK|<MARK]], [[⟨RESOLVE|<RESOLVE]] и [[⟩MARK|>MARK]]
| |
| * См. также слова [[BRANCH]] и [[?BRANCH]]
| |
| | |
|
| |
|
| {{нет иллюстраций}} | | {{нет иллюстраций}} |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Слова высокого уровня]]
| |
| [[Категория:Реализация структур управления Каллисто]]
| |
| [[Категория:Фортовские слова]]
| |