Редактирование: ⟩RESOLVE

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''>RESOLVE''' (разрешить) — фортовское слово [[Каллисто]]. Завершить компиляцию перехода вперёд.
'''>RESOLVE''' (разрешить) — стандартное слово [[Каллисто]].
>RESOLVE      ( a −− )                            Разрешить ссылку вперёд в адресе a.


Слово >RESOLVE снимает со [[Стек данных|стека]] [[Единое адресное пространство|адрес]], занесённый туда словом [[⟩MARK|>MARK]], и вписывает по этому адресу ссылку на текущую вершину [[Словарь|словаря]] в соответствии с требованиями [[BRANCH]] и [[?BRANCH]].
Разрешить ссылку вперёд в адресе a.
 
Слово >RESOLVE ( A ---> ) снимает адрес, занесённый словом [[⟩MARK|>MARK]], со [[Стек данных|стека]] и вписывает в него ссылку на текущую вершину [[Словарь|словаря]] в соответствии с принятой реализацией переходов в шитом коде, согласованной с реализацией [[BRANCH]] и [[?BRANCH]]


== Ввод слова >RESOLVE ==
== Ввод слова >RESOLVE ==
Строка 17: Строка 18:


== Реализация ==
== Реализация ==
<pre>
Определение слова &gt;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>
 
=== Советская реализация ===
Описание и определение слова &gt;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|&gt;RESOLVE}}
* См. слова [[⟨MARK|&lt;MARK]], [[⟨RESOLVE|&lt;RESOLVE]] и [[⟩MARK|&gt;MARK]]
* См. также слова [[BRANCH]] и [[?BRANCH]]




Строка 101: Строка 32:
[[Категория:Слова высокого уровня]]
[[Категория:Слова высокого уровня]]
[[Категория:Реализация структур управления Каллисто]]
[[Категория:Реализация структур управления Каллисто]]
[[Категория:Фортовские слова]]
[[Категория:Слова Каллисто без стековых диаграмм]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)