Архитектура Каллисто: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
(не показано 35 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Язык [[Каллисто]] впервые архитектурно объединил два языка программирования, развивавшихся десятилетиями независимо друг от друга — входной язык советских [[ПМК]] и язык Форт, в первую очередь советские реализации Форта (Форт-ЕС и Форт ИТЭФ). | |||
Вкратце [[Каллисто]] состоит из двух интерпретаторов, двух стеков и двух словарей. | |||
== Алгоритмы == | == Алгоритмы == | ||
Сердце [[Каллисто]] составляют два интерпретатора: | Сердце [[Каллисто]] составляют два интерпретатора: | ||
* [[INTERPRET|Текстовый (внешний) интерпретатор]] воспринимает язык [[Каллисто]] и работает в двух режимах | * [[INTERPRET|Текстовый (внешний) интерпретатор]] воспринимает язык [[Каллисто]] и работает в двух режимах, получая входной поток с пульта (при [[BLK]]=0) и из [[блок]]а. Вне зависимости от режима, [[текстовый интерпретатор]] может находиться в двух [[STATE|состояниях]]: | ||
* [[Адресный интерпретатор|Адресный (внутренний) интерпретатор]] выполняет [[шитый код]], являющийся частью транслятора или созданный в результате компиляции | ** [[Состояние исполнения|исполнения]] — вводимые слова исполняются сразу, как будут найдены в [[Словарь|словаре]] | ||
** [[Состояние компиляции|компиляции]] — вводимые слова компилируются в [[шитый код]], чтобы их можно было быстро (и неоднократно) исполнить позднее | |||
* [[Адресный интерпретатор|Адресный (внутренний) интерпретатор]] выполняет [[шитый код]], являющийся частью транслятора или созданный в результате компиляции приложений, написанных на [[Каллисто]]. | |||
== Словарный запас == | == Словарный запас == | ||
''Подробнее см. статью [[Слова Каллисто по категориям]]'' | ''Подробнее см. статью [[Слова Каллисто по категориям]]'' | ||
Для удобства изучения встроенные каллистянские слова можно разбить на несколько мало пересекающихся групп: | |||
* Общие — слова, имя и назначение которых практически одинаковы в [[Каллисто]], советских [[ПМК]] и Форте. Примеры: [[Слово +|+]] [[Слово −|− | * Общие — слова, имя и назначение которых практически одинаковы в [[Каллисто]], советских [[ПМК]] и Форте. Примеры: [[Слово +|+]] [[Слово −|−]] | ||
* Традиционные — слова, | * Традиционные — слова, унаследованные из входного языка советских [[ПМК]] и [[ЭКВМ]] с минимальными изменениями. Примеры: [[Слово ×|×]] [[Слово ÷|÷]] [[Слово /−/|/−/]] [[Слово ↔|↔]] [[Слово Π|$\pi$]] [[X²|x<sup>2</sup>]] [[Слово √|√]] [[Слово 1/X|1/x]] [[10ˣ|10<sup>x</sup>]] [[Eˣ|e<sup>x</sup>]] [[ln]] [[lg]] [[sin]] [[cos]] [[tg]] [[arcsin]] [[arccos]] [[arctg]] [[НОП]] [[¦X¦||X|]] [[[X]|[X]]] [[⎨X⎬|{X}]] [[СЧ]] [[ЗН]] [[ИПРГ]] | ||
* Усовершенствованные — слова, развивающие входной язык советских [[ПМК]] и [[ЭКВМ]]. Примеры: [[Слово ↑|↑]] [[Yˣ]] [[ | * Усовершенствованные — слова, творчески развивающие [[ЯМК|входной язык]] советских [[ПМК]] и [[ЭКВМ]]. Примеры: [[Слово ↑|↑]] [[Yˣ]] [[AND]] [[OR]] [[XOR]] [[NOT]] [[MAX]] | ||
* Фортовские — слова, имя и значение которых взяты из Форта или {{colorForth}} практически без изменений. Примеры: [[1+]] [[1−]] [[Слово /|/]] [[2/]] [[DROP]] [[OVER]] [[ROT]] [[MIN]] [[EMIT]] [[TYPE]] [[KEY]] [[ACCEPT]] [[CONSTANT]] [[VARIABLE]] [[ALLOT]] [[FILL]] [[ERASE]] [[BLANK]] [[AT]] [[FOR]] [[Слово I|I]] [[Слово J|J]] [[Слово K|K]] [[NEXT]] [[IF]] [[ELSE]] [[THEN]] [[BEGIN]] [[UNTIL]] [[WHILE]] [[REPEAT]] [[AGAIN]] [[IMMEDIATE]] | * Фортовские — слова, имя и значение которых взяты из Форта или {{colorForth}} практически без изменений. Примеры: [[1+]] [[1−]] [[Слово /|/]] [[MOD]] [[Слово /MOD|/MOD]] [[2/]] [[Слово @|@]] [[Слово !|!]] [[DROP]] [[OVER]] [[ROT]] [[MIN]] [[EMIT]] [[TYPE]] [[KEY]] [[ACCEPT]] [[BASE]] [[STATE]] [[CONSTANT]] [[VARIABLE]] [[HERE]] [[Слово ,|,]] [[C,]] [[ALLOT]] [[FILL]] [[ERASE]] [[BLANK]] [[AT]] [[FOR]] [[Слово I|I]] [[Слово J|J]] [[Слово K|K]] [[NEXT]] [[IF]] [[ELSE]] [[THEN]] [[BEGIN]] [[UNTIL]] [[WHILE]] [[REPEAT]] [[AGAIN]] [[IMMEDIATE]] [[WORD]] [[WORDS]] [[BELL]] | ||
* Адаптированные — | ** Когда фортовское слово соответствует стандарту ANS, его называют ''стандартным''. | ||
* Родные — слова, имя или значение которых уникальны для [[Каллисто]]. Примеры: [[U@]] [[TYPE1]] [[ДALLOT]] [[ | * Адаптированные — {{colorForth}} и других диалектов Форта, адаптированные к архитектуре [[Каллисто]] или МК-161. Примеры: [[×/]] [[×/MOD]] [[APP]] [[VALUE]] [[FINDN]] [[Слово .|.]] [[I.]] [[Слово ↖|↖]] [[Слово ↵|↵]] [[SPACE]] [[SPACES]] [[EKEY]] [[DARK]] [[LIGHT]] [[+BOX]] [[BEEP]] | ||
* Системные — слова для доступа к низкоуровневым возможностям системы «Электроники МК». Примеры: [[ИП]] [[П]] [[КАТ]] [[‗RW|_RW]] | * Родные — слова, имя или значение которых уникальны для [[Каллисто]]. Примеры: [[U@]] [[VERSION]] [[TYPE1]] [[ДHERE]] [[Д,]] [[ДALLOT]] [[INKEY]] [[BUFBLK]] [[FONT!]] [[(PLAY)]] | ||
* Дополнительные — слова, отсутствующие в ядре [[Каллисто]], определения которых предлагается включать в | * Системные — слова для доступа к низкоуровневым возможностям системы «Электроники МК». Примеры: [[Слово ИП|ИП]] [[Слово П|П]] [[КАТ]] [[‗RW|_RW]] [[ATR!]] [[‗FONT|_FONT]] | ||
* Служебные — вспомогательные слова, используемые [[Каллисто]] и не предназначенные для обычных разработчиков. Примеры: [[FL]] [[(ИП)]] [[(LITERAL)]] | |||
* Дополнительные — слова, отсутствующие в ядре [[Каллисто]], определения которых предлагается включать в приложения самостоятельно. См. [[Палитра Каллисто]] | |||
== Структуры данных == | == Структуры данных == | ||
Основу структур данных Каллисто составляют два стека… | Основу структур данных Каллисто составляют два стека… | ||
* [[Стек данных]] (десятичный) | * [[Стек данных]] (десятичный) содержит [[Десятичное число|десятичные числа]] | ||
* [[Стек возвратов]] (двоичный) | * [[Стек возвратов]] (двоичный) содержит 16-битные двоичные числа — обычно это адреса возвратов при исполнении вложенных слов высокого уровня | ||
…и два словаря: | …и два словаря: | ||
* [[Двоичный словарь]] (классический для Форта) | * [[Двоичный словарь]] (классический для Форта) — здесь хранятся заголовки слов [[Каллисто]], а также их реализация в [[Шитый код|шитом коде]] или на [[ЯМК|языке МК]] | ||
* [[Десятичный словарь]] (уникальный для Каллисто) | * [[Десятичный словарь]] (уникальный для Каллисто) — [[Каллисто]] хранит здесь значения [[VALUE|десятичных величин]] и [[FLITERAL|десятичных констант-литералов]] | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория: Каллисто]] | [[Категория: Каллисто]] |
Текущая версия от 04:06, 26 февраля 2018
Язык Каллисто впервые архитектурно объединил два языка программирования, развивавшихся десятилетиями независимо друг от друга — входной язык советских ПМК и язык Форт, в первую очередь советские реализации Форта (Форт-ЕС и Форт ИТЭФ).
Вкратце Каллисто состоит из двух интерпретаторов, двух стеков и двух словарей.
Алгоритмы[править]
Сердце Каллисто составляют два интерпретатора:
- Текстовый (внешний) интерпретатор воспринимает язык Каллисто и работает в двух режимах, получая входной поток с пульта (при BLK=0) и из блока. Вне зависимости от режима, текстовый интерпретатор может находиться в двух состояниях:
- исполнения — вводимые слова исполняются сразу, как будут найдены в словаре
- компиляции — вводимые слова компилируются в шитый код, чтобы их можно было быстро (и неоднократно) исполнить позднее
- Адресный (внутренний) интерпретатор выполняет шитый код, являющийся частью транслятора или созданный в результате компиляции приложений, написанных на Каллисто.
Словарный запас[править]
Подробнее см. статью Слова Каллисто по категориям
Для удобства изучения встроенные каллистянские слова можно разбить на несколько мало пересекающихся групп:
- Общие — слова, имя и назначение которых практически одинаковы в Каллисто, советских ПМК и Форте. Примеры: + −
- Традиционные — слова, унаследованные из входного языка советских ПМК и ЭКВМ с минимальными изменениями. Примеры: × ÷ /−/ ↔ $\pi$ x2 √ 1/x 10x ex ln lg sin cos tg arcsin arccos arctg НОП |X| [X] {X} СЧ ЗН ИПРГ
- Усовершенствованные — слова, творчески развивающие входной язык советских ПМК и ЭКВМ. Примеры: ↑ Yˣ AND OR XOR NOT MAX
- Фортовские — слова, имя и значение которых взяты из Форта или colorForth практически без изменений. Примеры: 1+ 1− / MOD /MOD 2/ @ ! DROP OVER ROT MIN EMIT TYPE KEY ACCEPT BASE STATE CONSTANT VARIABLE HERE , C, ALLOT FILL ERASE BLANK AT FOR I J K NEXT IF ELSE THEN BEGIN UNTIL WHILE REPEAT AGAIN IMMEDIATE WORD WORDS BELL
- Когда фортовское слово соответствует стандарту ANS, его называют стандартным.
- Адаптированные — colorForth и других диалектов Форта, адаптированные к архитектуре Каллисто или МК-161. Примеры: ×/ ×/MOD APP VALUE FINDN . I. ↖ ↵ SPACE SPACES EKEY DARK LIGHT +BOX BEEP
- Родные — слова, имя или значение которых уникальны для Каллисто. Примеры: U@ VERSION TYPE1 ДHERE Д, ДALLOT INKEY BUFBLK FONT! (PLAY)
- Системные — слова для доступа к низкоуровневым возможностям системы «Электроники МК». Примеры: ИП П КАТ _RW ATR! _FONT
- Служебные — вспомогательные слова, используемые Каллисто и не предназначенные для обычных разработчиков. Примеры: FL (ИП) (LITERAL)
- Дополнительные — слова, отсутствующие в ядре Каллисто, определения которых предлагается включать в приложения самостоятельно. См. Палитра Каллисто
Структуры данных[править]
Основу структур данных Каллисто составляют два стека…
- Стек данных (десятичный) содержит десятичные числа
- Стек возвратов (двоичный) содержит 16-битные двоичные числа — обычно это адреса возвратов при исполнении вложенных слов высокого уровня
…и два словаря:
- Двоичный словарь (классический для Форта) — здесь хранятся заголовки слов Каллисто, а также их реализация в шитом коде или на языке МК
- Десятичный словарь (уникальный для Каллисто) — Каллисто хранит здесь значения десятичных величин и десятичных констант-литералов
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |