OberonCore https://forum.oberoncore.ru/ |
|
Новый компилятор https://forum.oberoncore.ru/viewtopic.php?f=61&t=6363 |
Страница 3 из 4 |
Автор: | Comdiv [ Суббота, 09 Март, 2019 05:43 ] |
Заголовок сообщения: | Re: Новый компилятор |
kekc_leader писал(а): Спасибо. Да, с ARM всё гораздо проще. Проще, чем с официальной документацией для Intel 64 и IA-32? Как же все остальные обходились с плохой документацией?Кстати, странный псевдокод в официальном справочнике от Intel Код: IF SRC = 0 Вырвиглазные ключевые слова прописными буквами и комментарии, почему-то, не через две косые черты.THEN #DE; FI; (* Divide Error *) IF OperandSize = 8 (* Word/Byte Operation *) THEN temp ← AX / SRC; IF temp > FFH THEN #DE; (* Divide error *) ELSE AL ← temp; AH ← AX MOD SRC; FI; ELSE IF OperandSize = 16 (* Doubleword/word operation *) THEN temp ← DX:AX / SRC; IF temp > FFFFH THEN #DE; (* Divide error *) ELSE AX ← temp; DX ← DX:AX MOD SRC; FI; FI; ELSE IF Operandsize = 32 (* Quadword/doubleword operation *) THEN temp ← EDX:EAX / SRC; IF temp > FFFFFFFFH THEN #DE; (* Divide error *) ELSE EAX ← temp; EDX ← EDX:EAX MOD SRC; FI; FI; ELSE IF 64-Bit Mode and Operandsize = 64 (* Doublequadword/quadword operation *) THEN temp ← RDX:RAX / SRC; IF temp > FFFFFFFFFFFFFFFFH THEN #DE; (* Divide error *) ELSE RAX ← temp; RDX ← RDX:RAX MOD SRC; FI; FI; FI; У ARM всё поприличней Код: if ConditionPassed() then Но тоже не хватает скобок вокруг условий после if и then явно лишний
EncodingSpecificOperations(); if UInt(R[m]) == 0 then if IntegerZeroDivideTrappingEnabled() then GenerateIntegerZeroDivide(); else result = 0; else result = RoundTowardsZero(UInt(R[n]) / UInt(R[m])); R[d] = result<31:0>; |
Автор: | Artyemov [ Суббота, 09 Март, 2019 15:19 ] |
Заголовок сообщения: | Re: Новый компилятор |
Цитата: Проще, чем с официальной документацией для Intel 64 и IA-32? Доступность - может даже проще, у "интеля", не помню, c intel.com сразу и не найдёшь. По объёмности - меньше. RISC же, хотя в последнее время (я так думаю, с v5) "reduced instruction set" становится совсем не"reduced". Цитата: Как же все остальные обходились с плохой документацией? Она не "плохая" - она "своеобразная": всё равно лучше и полнее "автора" изложить предмет не сможет никто. С компилятором интеля кто-то может конкурировать? Если они используют ту же документацию что отдают, то вопрос о качестве документации отпадает. |
Автор: | Comdiv [ Суббота, 09 Март, 2019 17:08 ] |
Заголовок сообщения: | Re: Новый компилятор |
Пётр Кушнир писал(а): Это неизвестно и непонятно, почему разработка нормального компилера с AST и сменными кодогенераторами по мотивам Compiler Construction должна привести к чему-то, отличному от OP2.Paper (кажется, так она называлась)? Речь об этом документе - ftp://ftp.ethoberon.ethz.ch/Oberon/Ober ... aper.ps.gz ? Там всего 10 страниц
|
Автор: | Comdiv [ Суббота, 09 Март, 2019 17:12 ] |
Заголовок сообщения: | Re: Новый компилятор |
Artyemov писал(а): всё равно лучше и полнее "автора" изложить предмет не сможет никто Смотря для каких целей. Вот kekc_leader посчитал, что для своих целей смог. Уже не терпится посмотреть, что же он подразумевал под хорошим всеобъемлющим справочником.
|
Автор: | Борис Рюмшин [ Суббота, 09 Март, 2019 18:01 ] |
Заголовок сообщения: | Re: Новый компилятор |
Comdiv писал(а): Речь об этом документе - ftp://ftp.ethoberon.ethz.ch/Oberon/Ober ... aper.ps.gz ? Там всего 10 страниц Это краткая статья. Есть ещё диссертация (или ETH-овский репорт). Там подробнее. |
Автор: | Comdiv [ Суббота, 09 Март, 2019 18:21 ] |
Заголовок сообщения: | Re: Новый компилятор |
Эта? - Separate compilation and module extension |
Автор: | Борис Рюмшин [ Суббота, 09 Март, 2019 22:31 ] |
Заголовок сообщения: | Re: Новый компилятор |
Ну это его дисер (есть на и сайте у нас https://oberoncore.ru/library/crelier_s ... _extension), а есть репорт: https://oberoncore.ru/library/op2_a_por ... 2_compiler |
Автор: | kekc_leader [ Воскресенье, 10 Март, 2019 05:17 ] |
Заголовок сообщения: | Re: Новый компилятор |
Возможно я неточно выразился. Проблема с документациями и справочниками по машинным кодам в том, что они изложение материала в них не идёт от простого к сложному. Возможно, так и должно быть, но такой книги, где указанный порядок присутствует, явно не хватает. Например, для простейшего компилятора многие машинные коды вовсе не нужны. |
Автор: | Comdiv [ Воскресенье, 10 Март, 2019 15:37 ] |
Заголовок сообщения: | Re: Новый компилятор |
kekc_leader писал(а): Проблема с документациями и справочниками по машинным кодам в том, что они изложение материала в них не идёт от простого к сложному. Вряд ли это задача справочника, так как он предназначен для выборочного, а не последовательного чтения. Для таких задач, скорее, учебник искать надо.
|
Автор: | Artyemov [ Воскресенье, 10 Март, 2019 20:42 ] |
Заголовок сообщения: | Re: Новый компилятор |
Comdiv писал(а): Artyemov писал(а): всё равно лучше и полнее "автора" изложить предмет не сможет никто Смотря для каких целей. Вот kekc_leader посчитал, что для своих целей смог. Уже не терпится посмотреть, что же он подразумевал под хорошим всеобъемлющим справочником.Вообще-то, я речь вёл о том, что автор архитектуры (читай - "первоисточник") главный источник. А уж в нашем случае: персказ перевода на русский это чаще всего - беда. |
Автор: | kekc_leader [ Понедельник, 11 Март, 2019 01:38 ] |
Заголовок сообщения: | Re: Новый компилятор |
Да, цели у справочника и у учебника разные. Наша цель — создать скорее учебник, чем справочник. |
Автор: | kekc_leader [ Вторник, 02 Апрель, 2019 20:58 ] |
Заголовок сообщения: | Re: Новый компилятор |
Обновления по проекту разработки компилятора Оберона на 2 апреля с. г.
https://github.com/kekcleader/oberon Желающие могут присоединиться к проекту! Код обильно комментирован. Фрагмент модуля Generator: Код: (* Выводит в файл заголовок ELF-файла *)
PROCEDURE WriteElfHeader; BEGIN WriteElfIdent; (* Выводит первые 16 байтов *) Word(2); (* Тип файла: исполнимый файл (бывает ещё .o и .so) *) Word(3); (* Архитектура процессора: Intel 386 *) DWord(1); (* Версия ELF-файла (ещё раз) *) DWord(08040054H); (* Вход в программу. Виртуальный адрес начала исполнения *) DWord(52); (* Смещение на начало таблицы программных заголовков *) DWord(0); (* Смещение на начало таблицы секций (в исполнимом - не нужны) *) DWord(0); (* Флаги процессора (для Intel 386 отсутствуют) *) Word(52); (* Размер заголовка ELF-файла в байтах *) Word(32); (* Размер одного программного заголовка *) Word(1); (* Количество программных заголовков *) Word(0); (* Размер заголовка секции (в исполнимом файле они не нужны) *) Word(0); (* Количество заголовков секций *) Word(0) (* Номер секции с таблицей строк (в исполнимом файле не нужны) *) END WriteElfHeader; |
Автор: | Kemet [ Среда, 03 Апрель, 2019 10:07 ] |
Заголовок сообщения: | Re: Новый компилятор |
Мне это так напоминает переписывание OP2, в котором без поллитры, такой-то матери и распечатанных таблиц перед глазами не разобраться. К слову, примерно так же написан современный freepascal - такая же маловразумительная каша внутри. |
Автор: | Ярослав Романченко [ Среда, 03 Апрель, 2019 10:55 ] |
Заголовок сообщения: | Re: Новый компилятор |
Kemet писал(а): маловразумительная каша внутри. Но каша хорошо приправленная
|
Автор: | Kemet [ Среда, 03 Апрель, 2019 11:34 ] |
Заголовок сообщения: | Re: Новый компилятор |
Ярослав Романченко писал(а): Но каша хорошо приправленная Ну, как говорится, на вкус и цвет... Я когда-то пытался переписать эту кашу из фрипаскаля на активном обероне, и оно даже немного работало, по крайней мере получившаяся помойка из странного кода компилировала исходники самого фрипаскаля под win32 и с помощью этого получались иногда работающие бинарники. Но я уже где-то на середине понял о всей бесперспективности этой работы. В результате так оно и умерло не родившись. В общем-то туда ему и дорога. А вот потраченное время жалко, да.
|
Автор: | kekc_leader [ Среда, 03 Апрель, 2019 15:41 ] |
Заголовок сообщения: | Re: Новый компилятор |
Не могли бы вы указать место в коде, которое вам не понятно? |
Автор: | kekc_leader [ Четверг, 04 Апрель, 2019 17:34 ] |
Заголовок сообщения: | Re: Новый компилятор |
Обновление по проекту (4 апреля 2019 г.) Исправлена процедура WriteDummy, теперь она создаёт работающий исполнимый файл. Ошибки были в четырёх строчках, и были найдены и устранены за 10 минут. Создаётся файл «Test», который выводит на экран «Hi!». (Заголовки ELF-файла и машинный код выводит программа на Обероне.) https://github.com/kekcleader/oberon/commit/fb0f1894fa8b2a15cb943c5568eb86eb6821ac14 |
Автор: | Сергей Оборотов [ Пятница, 05 Апрель, 2019 13:50 ] |
Заголовок сообщения: | Re: Новый компилятор |
kekc_leader писал(а): Не могли бы вы указать место в коде, которое вам не понятно? Папку chmod не находит. |
Автор: | kekc_leader [ Пятница, 05 Апрель, 2019 15:29 ] |
Заголовок сообщения: | Re: Новый компилятор |
Да, каталог не был добавлен по ошибке (неправильный файл «.gitignore»). Добавил. Сообщите, получилось ли скомпилировать. Я могу помочь. По итогам я бы написал инструкцию. |
Автор: | Comdiv [ Среда, 05 Июнь, 2019 16:36 ] |
Заголовок сообщения: | Re: Новый компилятор |
Последнее на данный час изменение в репозитории как и предыдущее сообщение датировано 5-м апреля. Разработчики взяли отпуск или перешли в закрытый режим разработки? |
Страница 3 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |