Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''>RESOLVE''' (разрешить) — фортовское слово [[Каллисто]]. Завершить компиляцию перехода вперёд. | | '''>RESOLVE''' (разрешить) — стандартное слово [[Каллисто]]. |
| >RESOLVE ( a −− ) Разрешить ссылку вперёд в адресе a.
| |
|
| |
|
| Слово >RESOLVE снимает со [[Стек данных|стека]] [[Единое адресное пространство|адрес]], занесённый туда словом [[⟩MARK|>MARK]], и вписывает по этому адресу ссылку на текущую вершину [[Словарь|словаря]] в соответствии с требованиями [[BRANCH]] и [[?BRANCH]]. | | Разрешить ссылку вперёд в адресе a. |
| | |
| | Слово >RESOLVE ( A ---> ) снимает адрес, занесённый словом [[⟩MARK|>MARK]], со [[Стек данных|стека]] и вписывает в него ссылку на текущую вершину [[Словарь|словаря]] в соответствии с принятой реализацией переходов в шитом коде, согласованной с реализацией [[BRANCH]] и [[?BRANCH]] |
|
| |
|
| == Ввод слова >RESOLVE == | | == Ввод слова >RESOLVE == |
Строка 17: |
Строка 18: |
|
| |
|
| == Реализация == | | == Реализация == |
| <pre>
| | Определение слова >RESOLVE в ядре ФОРТ-ЕС: |
| 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> | | <PRE> |
| >RESOLVE К А-> РАЗРЕШИТЬ ССЫЛКУ ВПЕРЕД В АДРЕСЕ А 19
| |
|
| |
| Экран номер 19 | | Экран номер 19 |
| ( 31.03.86 СРАВНЕНИЯ И РАЗРЕШЕНИЯ В ШИТОМ КОДЕ) | | ( 31.03.86 CPАBHEHИЯ И РАЗРЕШЕНИЯ В ШИТОМ КОДЕ) |
|
| |
|
| : >RESOLVE ( A->) HERE SWAP ! ; | | : >RESOLVE ( A->) HERE SWAP ! ; |
| </PRE> | | </PRE> |
|
| |
| == Ссылки ==
| |
| * {{Исходник|FwdRESOLVE|>RESOLVE}}
| |
| * См. слова [[⟨MARK|<MARK]], [[⟨RESOLVE|<RESOLVE]] и [[⟩MARK|>MARK]]
| |
| * См. также слова [[BRANCH]] и [[?BRANCH]]
| |
|
| |
|
|
| |
|
Строка 101: |
Строка 32: |
| [[Категория:Слова высокого уровня]] | | [[Категория:Слова высокого уровня]] |
| [[Категория:Реализация структур управления Каллисто]] | | [[Категория:Реализация структур управления Каллисто]] |
| [[Категория:Фортовские слова]] | | [[Категория:Слова Каллисто без стековых диаграмм]] |