Search
Write a publication
Pull to refresh
9
0
Send message

Здравствуйте. Пока я об отладке не задумывался, и dwarf-секции не генерируются, поэтому отлаживать нормально код нельзя. Лично я баги компилятора изучаю, страдая читая выходной код на ассемблере (там есть немного комментариев).

Здравствуйте. Я начал писать этот компилятор с лета 2023 года. Писал с большими перерывами, так как я сейчас учусь в вузе. Я начал его писать на базе другого компилятора для более простого языка, который я писал в 2022-2023 учебном году, и который был моим дипломным проектом.

Могу отметить, что при написании такого сложного для меня проекта (всё другое, что я писал, было намного проще) требуется большая концентрация и "видение всего проекта", иначе можно придумать что-то неудачно, потратить на это время, и обнаружить проблему позже. Поэтому писать медленно и по чуть-чуть не получалось — только рывками помногу.

Стандартная библиотека у меня очень мала, и с нормальным знанием языка пишется очень быстро (за несколько дней). Написание её на alias-е тоже прошло быстро и без проблем, что доставило мне большое чуство удовлетворённости от того, что хотя бы это на моём языке можно написать.

Конечно же, время зависит от опыта и знаний системного программирования. Я заранее не знал всё это и изучал по ходу написания. Поэтому оно и длится несколько лет.

Спасибо за отзыв!

специалиста, который недостаточно квалифицирован в том, о чём он взялся писать

Это действительно так — я самоучка.

Нет такого языка — llvm

Здесь довольно мутно — неужели нельзя называть промежуточное представление языком? (И intermediate representation, и bitcode)

Я бы вообще рекомендовал избегать использования слова “сигнатура” в контексте C.

Возможно, я неправильно понял значение слова "сигнатура". Для меня это "формат" функции (что она принимает и возвращает) в отрыве от конкретного кода и языка (неважно, `int(*)(int, char)`, или `int -> char -> int`).

Резюме: ...

Здесь я хотел бы предложить посмотреть на книгу Operating Systems: From 0 to 1, а затем мой отзыв на неё.

Отзыв

До данной книги я знал, непосредственно, просто язык C, а также graphic APIs (но это другая история). Конечно, эта книга не ответила на вопрос, как, собственно писать ОС, так как на этом она просто обрывается.

Однако, книга очень хорошо и подробно показала, как происходит процесс компиляции. Почему именно она? Потому что после её прочтения я "поверил", что это работает именно так. Например, когда я читаю обычную сверхизвестную книгу (например, Танненбаума, но здесь это лишь гиперболизированный пример, так как к теме он не относится), я получаю обзор "как всё сложно устроено", вместо полноценного минимального примера.

Здесь же в результате чтения я понял, как читать языки ассемблера (для разных архитектур), увидел, как просто работают компиляторы (если выключить оптимизации), сложил A + B и написал простой компилятор в язык ассемблера x86 (что является интересным опытом).

Это лишь моё видение обучения — через "показать минимальный рабочий пример", а дальше обучающийся будет понимать, в какую сторону именно ему нужно смотреть.

То, что написал я — было по большей части вдохновлено этой книгой. И, конечно, я считаю это не книгой в общеизвестном смысле, а минимальной wiki.

Information

Rating
Does not participate
Registered
Activity