Стековая нотация: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 4: Строка 4:
Слева находится имя того слова [[Каллисто]], которое документируется. В данном случае имя состоит из одной литеры "+".
Слева находится имя того слова [[Каллисто]], которое документируется. В данном случае имя состоит из одной литеры "+".


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


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


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


{{заготовка}}
{{заготовка}}
[[Категория:Каллисто]]
[[Категория:Каллисто]]

Текущая версия от 20:43, 5 июня 2016

Стековая нотация — минимальное требование к документированию слова Каллисто, размером в одну строку. Пример стековой нотации:

+              ( y x -- x1 )                   Сложение. x1 ← y + x

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

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

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

DEGREES        ( -- )                          Градусы.

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

Обозначение типа элемента стека в стековой нотации[править]

Строго говоря, в Каллисто все элементы стека имеют одинаковый тип «десятичное число» и размер в 1 десятичный регистр. Но слова имеют определённые ожидания насчёт аргументов, передаваемых им через стек. Также кое-что можно сказать заранее о значениях, возвращаемых словами Каллисто.

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

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) слова
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 )                    Дублировать.
2DUP           ( y x -- y x y x )              Дублировать пару чисел.

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

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