Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте или
создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Правка может быть отменена.
Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия |
Ваш текст |
Строка 2: |
Строка 2: |
| >RESOLVE ( a −− ) Разрешить ссылку вперёд в адресе a. | | >RESOLVE ( a −− ) Разрешить ссылку вперёд в адресе a. |
|
| |
|
| Слово >RESOLVE снимает со [[Стек данных|стека]] [[Единое адресное пространство|адрес]], занесённый туда словом [[⟩MARK|>MARK]], и вписывает по этому адресу ссылку на текущую вершину [[Словарь|словаря]] в соответствии с требованиями [[BRANCH]] и [[?BRANCH]]. | | Слово >RESOLVE снимает [[Единое адресное пространство|адрес]], занесённый словом [[⟩MARK|>MARK]], со [[Стек данных|стека]] и вписывает в него ссылку на текущую вершину [[Словарь|словаря]] в соответствии с требованиями [[BRANCH]] и [[?BRANCH]]. |
|
| |
|
| == Ввод слова >RESOLVE == | | == Ввод слова >RESOLVE == |
Строка 17: |
Строка 17: |
|
| |
|
| == Реализация == | | == Реализация == |
| <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 в ядре ФОРТ-ЕС: | | Описание и определение слова >RESOLVE в ядре ФОРТ-ЕС: |
| <PRE> | | <PRE> |