Комментарии 10
Первый же комментарий: habrahabr.ru/blogs/programming/102597/#comment_3187575
Как бы ни сказал Киса Воробьянинов: да… уж...! Если не секрет, то каким путеводителем пользовались при переводу в карту машкодов? Не верится, что такой код генерирует не оптимизирующий компилятор :)
Путеводителем? Никаким, только подробным списком инструкций и для самопроверки — онлайн-дизассемблером
*CRAZY*
ой, зачем же перемешали кодогенератор с ассемблером, читать же (не говоря о поддерживать) не удобно.
эх, из-за того что у вы регаллок делаете слишком высоко приходится вам пляски с бубнами устраивать там где вылазит неортогональность (деление, сдвиги), плюс он ничего не знает о конвенциях вызова (мог бы допустим учитывать их и стараться садить темпоралы на портящиеся вызовами регистры).
Сгенерированный п-код использует четыре «абстрактных физических регистра» R01..R04, которым естественно сопоставить настоящие регистры EAX,ECX,EDX,EBX: т.е. номер настоящего регистра получается из номера «абстрактного» вычитанием единицы
эх, из-за того что у вы регаллок делаете слишком высоко приходится вам пляски с бубнами устраивать там где вылазит неортогональность (деление, сдвиги), плюс он ничего не знает о конвенциях вызова (мог бы допустим учитывать их и стараться садить темпоралы на портящиеся вызовами регистры).
ой, зачем же перемешали кодогенератор с ассемблером, читать же (не говоря о поддерживать) не удобно.
А как красивее?
Делать второй промежуточный код, который соответствует набору команд x86?
эх, из-за того что у вы регаллок делаете слишком высоко
Это нарочно: чтоб код компилятора был прозрачнее, и «слои» ложились один на другой, а не взаимопроникали.
Тут же не промышленный компилятор, а учебная действующая модель.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Компиляция. 9: исполняемый код