Actualmente estoy en el proceso de escribir un compiler y parece que me he encontrado con algunos problemas para obtener el código de salida que se ejecuta en un marco de tiempo decente.¿Cuáles son algunos consejos para optimizar el código de ensamblado generado por un compilador?
Una breve descripción del compilador:
7Basic es un compilador que tiene como objetivo compilar código 7Basic directamente en código máquina para el objetivo de la arquitectura/plataforma. Actualmente, 7Basic genera ensamblaje x86 dado un archivo fuente.
El problema es que el código ensamblador generado por el compilador es lento e ineficiente.
Por ejemplo, el código this (que compila hasta this código de ensamblaje) tarda casi 80,47 veces más en ejecutarse que the equivalent C code.
Parte del problema es que el compilador genera código como el siguiente:
push eax
push 5000000
pop ebx
pop eax
En lugar de la más lógica:
mov ebx,5000000
... que lleva a cabo la misma cosa.
Mi pregunta es: ¿cuáles son algunas técnicas para evitar este tipo de problema? El analizador básicamente utiliza recursividad para analizar las expresiones, por lo que el código generado refleja esto.
Agregue -O3 a su línea de comandos del compilador ;-) – hirschhornsalz
+1 @drhirsch LOL – karlphillip
"... un ** compilador BASIC ** multiplataforma que genera ejecutables nativos ** Win32 **." ¿Esperar lo? –