Как стать автором
Обновить

Комментарии 10

Тёмыч, тут для твоего языка сделали компилятор на llvm, если вдруг не видел.
Нде -_-". Просто вспомнил, что была такая статья и в поиске нашёл, не пересматривая комментарии.
Как бы ни сказал Киса Воробьянинов: да… уж...! Если не секрет, то каким путеводителем пользовались при переводу в карту машкодов? Не верится, что такой код генерирует не оптимизирующий компилятор :)
Цикл статей шедевральный. Для людей определенного склада ума может иметь тот же резонанс, что книга «как приготовить бомбу из подручных материалов».
ой, зачем же перемешали кодогенератор с ассемблером, читать же (не говоря о поддерживать) не удобно.

Сгенерированный п-код использует четыре «абстрактных физических регистра» R01..R04, которым естественно сопоставить настоящие регистры EAX,ECX,EDX,EBX: т.е. номер настоящего регистра получается из номера «абстрактного» вычитанием единицы


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

А как красивее?
Делать второй промежуточный код, который соответствует набору команд x86?

эх, из-за того что у вы регаллок делаете слишком высоко

Это нарочно: чтоб код компилятора был прозрачнее, и «слои» ложились один на другой, а не взаимопроникали.

Тут же не промышленный компилятор, а учебная действующая модель.
А как красивее?


Сделать класс Assembler с методами mov, jmp и т.д.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории