Attualmente sto scrivendo uno compiler e sembra che ci siano alcuni problemi nel portarlo al codice di output che viene eseguito in un intervallo di tempo decente.Quali sono alcuni suggerimenti per ottimizzare il codice assembly generato da un compilatore?
Una breve panoramica del compilatore:
7 Elementi è un compilatore che mira a compilare il codice 7 Elementi direttamente in codice macchina per il target architettura/piattaforma. Attualmente 7Basic genera un assembly x86 dato un file sorgente.
Il problema è che il codice assembly generato dal compilatore è lento e inefficiente.
Ad esempio, il codice this (che si compila fino al codice di assemblaggio this) impiega circa 80,47 volte più a lungo rispetto a the equivalent C code.
Parte del problema è che il compilatore genera codice come il seguente:
push eax
push 5000000
pop ebx
pop eax
Anziché il più logico:
mov ebx,5000000
... che compie la stessa cosa.
La mia domanda è: quali sono alcune tecniche per evitare questo tipo di problema? Il parser utilizza fondamentalmente la ricorsione per analizzare le espressioni, quindi il codice generato riflette questo.
Aggiungi -O3 alla riga di comando del compilatore ;-) – hirschhornsalz
+1 @drhirsch LOL – karlphillip
"... un ** compilatore BASIC multipiattaforma ** che genera eseguibili nativi ** Win32 **." Aspetta cosa? –