Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''>RESOLVE''' (разрешить) — фортовское слово [[Каллисто]]. Завершить компиляцию перехода вперёд. | | '''>RESOLVE''' (разрешить) — стандартное слово [[Каллисто]]. |
| >RESOLVE ( a −− ) Разрешить ссылку вперёд в адресе a.
| |
|
| |
|
| Слово >RESOLVE снимает со [[Стек данных|стека]] [[Единое адресное пространство|адрес]], занесённый туда словом [[⟩MARK|>MARK]], и вписывает по этому адресу ссылку на текущую вершину [[Словарь|словаря]] в соответствии с требованиями [[BRANCH]] и [[?BRANCH]].
| | Разрешить ссылку вперёд в адресе a. |
|
| |
|
| == Ввод слова >RESOLVE ==
| | Слово >RESOLVE ( A ---> ) снимает адрес, занесённый словом [[⟩MARK|>MARK]], со [[Стек данных|стека]] и вписывает в него ссылку на текущую вершину [[Словарь|словаря]] в соответствии с принятой реализацией переходов в шитом коде, согласованной с реализацией [[BRANCH]] и [[?BRANCH]] |
| В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша ↔|{{Серая клавиша|↔}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
| |
|
| |
|
| Для возврата в [[режим NUM]] нажмите [[Клавиша P|синюю клавишу {{Синяя клавиша|P}}]].
| |
|
| |
|
| == >RESOLVE в предыдущем стандарте Forth-83 (англ.) == | | == >RESOLVE в предыдущем стандарте Forth-83 (англ.) == |
Строка 15: |
Строка 12: |
| using addr and places this branch address into the space | | using addr and places this branch address into the space |
| left by >MARK . | | 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]]
| |
|
| |
|
|
| |
|
Строка 99: |
Строка 17: |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Слова высокого уровня]]
| |
| [[Категория:Реализация структур управления Каллисто]] | | [[Категория:Реализация структур управления Каллисто]] |
| [[Категория:Фортовские слова]] | | [[Категория:Слова Каллисто без стековых диаграмм]] |