⟩RESOLVE: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) (Новая страница: «'''>RESOLVE''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слов…») |
AtH (обсуждение | вклад) |
||
(не показано 29 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
''' | '''>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]] | |||
{{нет иллюстраций}} | {{нет иллюстраций}} | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Слова высокого уровня]] | |||
[[Категория:Реализация структур управления Каллисто]] | |||
[[Категория:Фортовские слова]] |
Текущая версия от 22:45, 6 марта 2019
>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 ;
: 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 ;
: >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 ;
Советская реализация[править]
Описание и определение слова >RESOLVE в ядре ФОРТ-ЕС:
>RESOLVE К А-> РАЗРЕШИТЬ ССЫЛКУ ВПЕРЕД В АДРЕСЕ А 19 Экран номер 19 ( 31.03.86 СРАВНЕНИЯ И РАЗРЕШЕНИЯ В ШИТОМ КОДЕ) : >RESOLVE ( A->) HERE SWAP ! ;
Ссылки[править]
- Исходный текст слова >RESOLVE в Каллисто Классик 1.0
- См. слова <MARK, <RESOLVE и >MARK
- См. также слова BRANCH и ?BRANCH
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |