Я сейчас в процессе написания compiler, и у меня, похоже, возникли проблемы с получением кода вывода, который выполняется в приличном таймфрейме.Каковы некоторые советы по оптимизации кода сборки, сгенерированного компилятором?
Краткий обзор компилятора:
7Basic является компилятор, который ставит своей целью собрать 7Basic кода непосредственно в машинный код для целевой архитектуры/платформы. В настоящее время 7Basic генерирует сборку x86 с исходным файлом.
Проблема заключается в том, что сборка код, генерируемый компилятором медленно и неэффективно.
Например, код this (который составляет до this код сборки) занимает почти 80,47 раз дольше, чем the equivalent C code.
Часть проблемы заключается в том, что компилятор генерирует код вроде следующего:
push eax
push 5000000
pop ebx
pop eax
Вместо того, чтобы более логично:
mov ebx,5000000
... который выполняет то же самое.
Мой вопрос: какие методы избегают такого рода проблем? Парсер в основном использует рекурсию для анализа выражений, поэтому генерируемый код отражает это.
Добавить -O3 в вашу командную строку компилятора ;-) – hirschhornsalz
+1 @drhirsch LOL – karlphillip
«... ** кросс-платформенный ** BASIC-компилятор, который генерирует собственные ** исполняемые файлы ** Win32 **». Чего ждать? –