Текущая версия |
Ваш текст |
Строка 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-х уровневому стеку советских ПМК.
| |
|
| |
|
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Каллисто]] | | [[Категория:Каллисто]] |