Слово ?: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
 
(не показано 17 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''?''' (вопросительный знак, читается «вопрос») — стандартное слово [[Каллисто]]. Заглянуть в [[Ячейка (Каллисто)|ячейку]], [[Единое адресное пространство|адрес]] которой на [[Стек данных|стеке]].
?              ( a −− )                            Вывести значение ячейки по адресу a.
Удаляет число из [[Стек данных|стека]] и отображает на [[индикатор]]е содержимое [[Ячейка (Каллисто)|ячейки]], [[Единое адресное пространство|адрес]] которой равен этому числу.
== Ввод слова ? ==
В [[Режим NUM|режиме NUM]] нажмите [[Клавиша K|синюю клавишу {{Синяя клавиша|K}}]]
== История ==
Слово было в Форте−79, убрано из Форта−84.  Оно очень удобно для отладки и присутствует во многих системах.
=== ? в стандарте Forth-79 (англ.) ===
<pre>
?              addr --                      194    "question-mark"
    Display the number at address, using the format of "." .
</pre>
=== ? в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
<pre>
?            addr  --                        L0
        Print the value contained at the address in free format according to
        the current base.
</pre>


== Реализация ==
== Реализация ==
Слово ? это обёртка вокруг слов [[Слово @|@]] и [[Слово .|.]]. Оно может выдать число с плавающей запятой, если это число считывается из [[Регистр десятичных данных|десятичного регистра]].
Тем не менее, слово ? не предназначено для считывания беззнаковых 16-битных ячеек памяти и содержимого [[Регистры функций МК|регистров функций]]. К счастью, для этих целей просто написать собственные отладочные слова.
<pre>
3850 ;              ∗∗ Вспомогательные процедуры ∗∗
3851
3852 ;#q
3853 ; ?                ( a −− )                            Вывести значение ячейки по адресу a.
3854 ; Удалить число из стека и отобразить на экране содержимое ячейки, адрес которой равен этому числу.
3855 ; В Каллисто может выдать число с плавающей запятой, если оно считывается из десятичного регистра.
3856 LQUEST:        .DB    1
3857                .TEXT  "?"                    ; ( адрес −− )
3858                .DW    LDOTR
3859 QUEST:          .DW CALL, AT, BRAN,RFDOT
</pre>
Реализация из SP-Forth 4.20:
<pre>
: ? ( a-addr -- ) \ 94 TOOLS
\ Показать значение, хранящееся по адресу a-addr.
\ ? может быть реализован с использованием слов форматного преобразования
\ чисел. Соответственно, он может испортить перемещаемую область,
\ идентифицируемую #>.
  @ .
;
</pre>
=== Советская реализация ===
Описание и определение слова ? в ядре ФОРТ-ЕС:
Описание и определение слова ? в ядре ФОРТ-ЕС:
<PRE>
<PRE>
Строка 10: Строка 59:
: ? ( A->) @ . ;
: ? ( A->) @ . ;
</PRE>
</PRE>
Определение слова ? в FORTH ИТЭФ:
<PRE>
            HEAD    201Q,,277Q,QUEST,$COL                ; ?
            DW  AT,$DOT,SEMI
</PRE>
== Ссылки ==
* {{Исходник|q|?}}
{{нет иллюстраций}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Одноместные операции Каллисто]]
[[Категория:Средства отладки Каллисто]]
[[Категория:Работа с памятью Каллисто]]
[[Категория:Терминальный ввод/вывод Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 TOOLS]]
[[Категория:2012 TOOLS]]

Текущая версия от 17:41, 13 ноября 2017

? (вопросительный знак, читается «вопрос») — стандартное слово Каллисто. Заглянуть в ячейку, адрес которой на стеке.

?              ( a −− )                             Вывести значение ячейки по адресу a.

Удаляет число из стека и отображает на индикаторе содержимое ячейки, адрес которой равен этому числу.

Ввод слова ?[править]

В режиме NUM нажмите синюю клавишу  K 

История[править]

Слово было в Форте−79, убрано из Форта−84. Оно очень удобно для отладки и присутствует во многих системах.

? в стандарте Forth-79 (англ.)[править]

?              addr --                       194    "question-mark"
     Display the number at address, using the format of "." .

? в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

?             addr  --                         L0
        Print the value contained at the address in free format according to
        the current base.

Реализация[править]

Слово ? это обёртка вокруг слов @ и .. Оно может выдать число с плавающей запятой, если это число считывается из десятичного регистра.

Тем не менее, слово ? не предназначено для считывания беззнаковых 16-битных ячеек памяти и содержимого регистров функций. К счастью, для этих целей просто написать собственные отладочные слова.

3850 ;               ∗∗ Вспомогательные процедуры ∗∗
3851 
3852 ;#q
3853 ; ?                ( a −− )                             Вывести значение ячейки по адресу a.
3854 ; Удалить число из стека и отобразить на экране содержимое ячейки, адрес которой равен этому числу.
3855 ; В Каллисто может выдать число с плавающей запятой, если оно считывается из десятичного регистра.
3856 LQUEST:         .DB     1
3857                 .TEXT   "?"                     ; ( адрес −− )
3858                 .DW     LDOTR
3859 QUEST:          .DW CALL, AT, BRAN,RFDOT

Реализация из SP-Forth 4.20:

: ? ( a-addr -- ) \ 94 TOOLS
\ Показать значение, хранящееся по адресу a-addr.
\ ? может быть реализован с использованием слов форматного преобразования 
\ чисел. Соответственно, он может испортить перемещаемую область, 
\ идентифицируемую #>.
  @ .
;

Советская реализация[править]

Описание и определение слова ? в ядре ФОРТ-ЕС:

?       * А-> НАПЕЧАТАТЬ ЗНАЧЕНИЕ ПО АДРЕСУ А                   38

                     Экран номер 38
( 31.03.86    D.R  D.  .R . H.  U.  U.R  ?  )

: ? ( A->) @ . ;

Определение слова ? в FORTH ИТЭФ:

             HEAD    201Q,,277Q,QUEST,$COL                ; ?
             DW  AT,$DOT,SEMI

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.