You are here
Каллисто 0.9б
Каллисто 0.9б:
the-hacker.ru/2016/Callisto-0.9b.zip
Изменения отражены в листинге:
the-hacker.ru/2016/Callisto.html
Главное изменение в новой ветке 0.9 — в архив включён файл words.txt
В файле words.txt в алфавитном порядке перечислены все слова Каллисто: их имена, стековая диаграмма и краткое описание в одну строчку. Для специалиста этого файла достаточно, чтобы начать программировать на Каллисто. Разработать этот короткий точный файл в 45 Кб было трудней, чем написать Каллисто. Кстати, его создаёт из исходного файла Callisto.mkl программа mkwords.c — которая также есть в дистрибутиве.
Из нововведений главное — косвенная адресация! Всё, как в ПМК — автоинкремент, автодекремент, целая часть числа. Аналоги КИП и КП, вот только работают теперь они не только с регистрами 0…6, а с любыми переменными VARIABLE и FVARIABLE
Косвенная адресация ++@ и ++! работает с предварительным автоувеличением (как КИП4…КИП6 и КП4…КП6)
Косвенная адресация −−@ и −−! работает с предварительным автоуменьшением (как КИП0…КИП3 и КИП4…КИП6)
FVARIABLE это новое порождающее слово из Форта-94. Оно отличается от VARIABLE лишь тем, что созданная им переменная будет класть на стек адрес десятичного регистра, а не байтового. Также я освободил 30 десятичных регистров для программ на Каллисто. Точнее, продумал я это давно. Но теперь изменил нужный байт и вместо R50 первый доступный регистр это R20.
На примере FVARIABLE, как устроена косвенная адресация в Каллисто (указатель P можно объявить, как VARIABLE и ничего особо не изменится, ведь дробная часть указателя традиционно отбрасывается):
CREATE Строка 10 ALLOT Строка 10 DUMP FVARIABLE P Строка P ! P ++@ . P ++@ . 'П' P −−! 'К' P −−! Строка 10 DUMP
Убрано много повторений кода. Чтобы вместить эти нововведения, пришлось пройтись по всему тексту и оптимизировать его, иногда довольно жёсткими приёмами вроде кодово-адресной связки. Слова @ ! +! 0! и т.п. перестали адекватно работать с регистрами функций (это их ускорило) —пользуйтесь специализированными словами ИП и П.
- AtH's blog
- Log in or register to post comments
- Просмотров 2532