Да, надо. У меня давно уже возникают мысли о том, что псевдокод в моём случае - лишняя сущность. Но об этом ещё рано серьёзно думать.
Сегодня заработала "умная линковка", но пока спотыкается на forward-подпрограммах, их надо переделывать.
Да, надо. У меня давно уже возникают мысли о том, что псевдокод в моём случае - лишняя сущность. Но об этом ещё рано серьёзно думать.
Сегодня заработала "умная линковка", но пока спотыкается на forward-подпрограммах, их надо переделывать.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Псевдокод, каждая команда которого состоит из нескольких команд ассемблера (пи-код) или одной? Пи-код, на мой взгляд, проще оптимизировать, т.к. команды более обобщены. Я писал в статье об этом, тут со стр.52
Нашел некоторые свои поделки на Паскале, см.файлы. Что в них нужно подогнать под твой компиль? (Правда, на нынешнем ноуте с Win10 у меня нифига не работают ни DOS-овские программы, ни EmuZWin, не могу ничего сделать. :( В конце мая буду на нормальном компе у родоков, где всё пашет).
Скорее компилятор надо подогнать под поддержку того, что нужно этим программам...
Eurofoot и Topolog пока по объёму сгенерированного кода в 64 килобайта не уложатся.
Также там есть readln (которого у меня пока нет) и работа с файлами (которых у меня пока тоже нет).
Попробовал life.pas. Что изменил:
- uses заменил на {$i};
- в строке 36 и 37 изменил обращение к random;
- закомментировал строку 61 (из-за READKEY, его пока нет) и строку 69 (из-за оператора NOT, что-то с ним не так).
Собралось12135 байт. Но естественно не запустилось. Надо компилятор и библиотеки доделывать.
Прочитал статью. Интересно.
У меня всё, в принципе, так же, только пи-код другой. String в нём кажется совсем лишний, у меня всё что можно перебрасывается на библиотечные подпрограммы, деление тоже написано на Паскале (system_divmod.inc). Сделано это чтобы на начальном этапе не заморачиваться написанием деления, строк и прочего под новый процессор, а когда будет добавлено переопределение операторов - вообще станет штатной функцией компилятора.
Пи-код находится между синтаксическим деревом и инструкциями современных процессоров, которые заточены под языки высокого уровня. При подгонке пи-кода он всё больше похож на синтаксическое дерево и всё больше соответствует одной строке ассемблера какого-нибудь x86 или ARM. Поэтому и думаю что он мне не нужен.
Сейчас, если внимательно посмотреть на сгенерированный для Z80 код, можно увидеть что он как бы транслирован с 32-битного процессора. Почти так и есть.
в данных прогах обращение к файлам можно заменить загрузкой (инициализацией) значений в массивы.
Тем более не поместится.
В life.pas в процедуре FORMIROV первый цикл (который I, J, 80x24) выполняется около минуты.
Потом запнулось из-за (не)случайных чисел.
Займусь этим на следующей неделе.
Интересно, а выполнение пи-кода будет ли быстрее, чем скомпилированная программа?
По сравнению с тем что сейчас - однозначно
По сравнению с идеальным машинным кодом - нет. Пи-код это байт-код, которому нужен интерпретатор. На каждую операцию добавляется как минимум чтение байта и переход по таблице.
Видимо, утопичная идея была сделать "компилятор под все платформы". Нужно было хотя бы ограничиться 8-битными компьютерами. Ну или все, и старые, и новые платформы пусть на 8-битах сидят.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)