Редактирование: Стековая нотация

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

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

Текущая версия Ваш текст
Строка 1: Строка 1:
'''Стековая нотация''' — минимальное требование к документированию слова [[Каллисто]], размером в одну строку. Пример ''стековой нотации'':
'''Стековая нотация''' — минимальное требование к документированию слова [[Каллисто]], размером в одну строку. Пример стековой нотации:
  +              ( y x -- x1 )                   Сложение. x1 ← y + x
  +              ( x1 x2 -- x3 )                 Сложение. x3 ← x1 + x2


Слева находится имя того слова [[Каллисто]], которое документируется. В данном случае имя состоит из одной литеры "+".
Слева стоит слово [[Каллисто]], которое документируется. В данном случае это слово, состоящее из одного символа +


Далее, в скобках, идёт стековая диаграмма: описаны состояния [[Стек данных|стека]] до и после выполнения слова, разделённые литерами "--". По принятому соглашению вершина стека находится справа. За исключением особых случае (таких, как слова [[COLD]] и [[WARM]]) считается, что всё, находящееся в [[Стек данных|стеке]] до указанных элементов, остаётся неизменным.
Далее, в скобках, описано состояние стека до и после выполнения слова, разделённые символами --


Мы видим, что до выполнения слова "+" на стеке находилось два десятичных числа x1 и x2. Слово "+" убрало из стека верхнее из этих чисел, а нижнее заменило на x3. Если слово не меняет стек, ''стековая нотация'' выглядит вот так:
Мы видим, что до выполнения слова + на стеке находилось два десятичных числа x1 и x2. Слово + убрало из стека верхнее из этих чисел, а нижнее заменило на x3.
DEGREES        ( -- )                          Градусы.


''Стековая нотация'' завершается кратким названием слова, с возможным описанием его работы в свободном формате.
В конце стековой нотации идёт название команды, с возможным кратким описанием в свободном формате.


== Обозначение типа элемента стека в ''стековой нотации'' ==
== Обозначение типа в стековой нотации ==
Строго говоря, в [[Каллисто]] все элементы [[Стек данных|стека]] имеют одинаковый тип «[[десятичное число]]» и размер в 1 десятичный регистр. Но слова имеют определённые ожидания насчёт аргументов, передаваемых им через [[Стек данных|стек]]. Также кое-что можно сказать заранее о значениях, возвращаемых словами [[Каллисто]].
x y  любой элемент стека (десятичное число)
p    неотрицательное десятичное число
n    целое число
k    неотрицательное целое число
a    адрес, неотрицательное целое число


Традиционно эта дополнительная информация об аргументах и значениях отражается в буквах, которыми элементы [[Стек данных|стека]] обозначаются в ''стековой нотации''. Каждая буква, включая d, означает ровно один элемент стека данных:
Если в стековую нотацию входит несколько различных чисел данного типа, к букве может добавляться цифра, например x1 x2 x3
a        адрес в [[Единое адресное пространство|единой адресации]] (от 0 до 19'999)
b        8-битное целое (от -128 до 255)
c        неотрицательное 8-битное целое (от 0 до 255)
d        16-битное целое (от -32768 до 65535)
D        16-битное целое со знаком (от -32768 до 32767)
f        флаг: −1 «истина», 0 «ложь»
ф        флаг: 0 «ложь», отлично от нуля — «истина»
i        32-битное целое в [[Дополнительный код|дополнительном коде]] (от -2'147'483'648 до 2'147'483'647)
n        целое число (от -999'999'999'999 до 999'999'999'999)
p        неотрицательное [[десятичное число]] (от 0 до 9,999'999'999'99e99)
т        [[CFA|токен (CFA)]] слова
u        неотрицательное целое (от 0 до 999'999'999'999)
U        16-битное беззнаковое (от 0 до 65535)
x y z t  любой элемент стека ([[десятичное число]] от -9,999'999'999'99e99 до 9,999'999'999'99e99)


Если в ''стековую нотацию'' входит несколько различных чисел данного типа, к букве может добавляться цифра, например x1 x2 x3
Одинаковые вхождения обозначений типа означают одно и тоже число, например:
 
Одинаковые вхождения такого обозначения означают одно и тоже число, например:


  ↑              ( x -- x x )                    Дублировать.
  ↑              ( x -- x x )                    Дублировать.
  2DUP          ( y x -- y x y x )             Дублировать пару чисел.
  2DUP          ( x1 x2 -- x1 x2 x1 x2 )       Дублировать пару чисел.


Иногда буквами x y z t обозначаются вершина [[Стек данных|стека]] и три элемента под этой вершиной. Это не строгое правило, но оно упрощает изучение [[Каллисто]] тем, кто привык к 4-х уровневому стеку советских ПМК.


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

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

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

Шаблон, используемый на этой странице: