Kakos_Nonos писал(а):
Да, спасибо за тему!
В принципе, можно сделать и под z80, и под x86, если найти компилятор, но, там уже есть более развитые языки, особо смысла не вижу.
Компилятор, что я использую - 1974 года, написан на фортране для какого-то мейнфрейма, на нем, наверное, только капс был.
А в его исходниках разобраться очень сложно, сплошные goto
Zorko писал(а):
Саша, так твой код на Lua это просто обёртка над CP/M-ным компилятором? И, раз ты используешь эмулятор 22nice, он должен работать только под 32-битными виндами, так ведь? А как быть, если винда 64 ?
Такая связка выглядит несколько громоздко и неуклюже. Да, как ни крути, надо писать свой компилятор PL/M. Можно мультитаргетный - сразу для 8080, Z80 и x86, а можно и в байт-код J2ME. Ты прав, там есть более развитые языки, но прелесть мультитаргетного PL/M в облегчении переноса кода между 8080 и другими системами
Например, игры. Хотя конечно кто будет играть на Спектруме или телефоне в такое, что пойдёт и на Апогее))))
Не, любители найдутся, но мало, получается, всё равно делаем для собственного удовольствия, в основном)
Kakos_Nonos писал(а):
22nice я использовал для паскаля, пл/1 и фортрана. Пл/м же откомпилирован в нативный 32-х битный код.
Конечно, написать полноценный компилятор это хорошо, но пока у меня умений не хватает, потихоньку изучаю, может позже напишу.
Хорошо бы компилятор из си в примитивный байт-код, который можно легко транслировать в код любого процессора
Zorko писал(а):
Интересно. А как ты откомпилировал PL/M в 32-битный код?
Лучше не из Си, а из Паскаля, Оберона или PL/M
Так у тебя есть все исходники для сборки компилятора PL/M? Ты и правки в него можешь вносить?
Kakos_Nonos писал(а):
Я уже нашел откомпилированный, а его сделали так: исходник на фортране оттранслировали в С при помощи утилиты f2c, а его уже откомпилировали.
Zorko писал(а):
О, знакомый способ) Прям как Оберон в Си))
Kakos_Nonos писал(а):
Да, могу, правда я не компилировал, но не думаю что сложно.
Там сам исходник очень сложный я в нем не разобрался
Zorko писал(а):
И нормально пошло всё, не пришлось много править? Там нет больших платформенных привязок? Всё на стандартных библиотеках?
Его можно начать помаленьку рефакторить. Конечно если тебе это интересно
То есть разбирать кусочки кода, переосмысливать и переписывать на структурный язык типа Паскаля-Оберона
Kakos_Nonos писал(а):
Я си->байткод выбрал так как в си можно транслировать оберон или любой другой язык
Zorko писал(а):
Чем больше звеньев - тем сложнее процесс. И чреватее всякими накладками
Главное не промежуточные языки, главное - язык, на котором пишешь сам
Kakos_Nonos писал(а):
Да
Может быть, я скачал уже готовое. Но, наверное нет, там через файловый ввод-вывод
Zorko писал(а):
Промежуточные могут быть чем угодно. Вот сейчас если ты будешь дорабатывать компилятор PL/M, ты бы лучше модифицировал исходник на Фортране и потом транслировал в Си? Или выкинул бы фортрановский совсем, чтобы не сопровождать?
Kakos_Nonos писал(а):
Вечером скину исходник, но там вообще каша. goto, goto, goto
Врядли его буду дорабатывать, наверное, разберусь в компиляторестроении и свой напишу
Zorko писал(а):
А это не тот исходник, который размещён по ссылке в журнале Downgrade №19 ?
Ты прав, так будет сильно лучше. И можно постепенно, пошагово сам язык пересматривать
Ведь совместимость тебе особо не нужна, горы исходников на PL/M мы не наблюдаем
Kakos_Nonos писал(а):
Не, там исходник обертки на луа
Zorko писал(а):
Кстати, если решишься писать компилятор на каком-либо диалекте Оберона, будет очень здорово
Kakos_Nonos писал(а):
Да, лишь бы удобнее писать было
Можно будет запустить на многих платформах. Хотя, наверное, на луа напишу, там, хоть и исполняется медленнее, но удобные средства работы со строками, таблицами.
Можно первую версию на луа, а потом на оберон переписать
Kakos_Nonos писал(а):
В луа можно использовать строки как индекс массивов. Очень удобно для создания таблиц переменных, процедур. Для оберона придется писать свою систему для поддержки этого
Zorko писал(а):
Это верно. В Обероне таких встроенных возможностей нет, надо реализовать отдельными модулями поиск в таблицах по слову, хэшу слова и т.д.
Строковые операции конечно есть почти в каждой реализации. Но Оберон в чём-то пещерный, там надо каменным топором тесать иногда
Исходники plm транслятора