Ich schreibe im Moment einen Java-JIT-Compiler. Er funktioniert auch soweit ganz gut, erzeugt aber nur relativ zu dem was möglich wäre langsamen Code.
Problem an der ganzen Sache:
Java ist stackbasiert. Das heißt, z.B. die IADD (integer add) instruction pop zwei Parameter vom Stack, addiert sie und pushed das Ergebniss auf den Stack.
Ich wollte beim Compiliervorgang jetzt den Bytecode von Java in ein Code für eine virtuelle Maschine mit unendlich Registern umwandeln. Je nach Optimierungseinstellungen kann dieser Code dann weiter optimiert werden. (Inlining usw.) Dieser Code sollte dann zu x86 Code kompiliert werden.
Hat jemand noch andere Vorschläge für die Optimierung des Compilers?