Lange Zeit (so ungefähr ein halbes Jahr) nach der Ankündigung eines Re-
writes meines alten Compilers (zu finden irgendwo hier im Forum) habe
ich mich vor 3 Wochen hingesetzt und angefangen (war gezwungen, da
ich einen Abgabetermin für die Arbeit habe, Frühling 06 inkl. Doku, die
noch folgt).
Wie angekündigt ist er jetzt sehr viel beispielhafter (auch wenn man das
vom Code nicht überall sagen kann) inkl. anschaubarem ASM-Output. Es
wird jetzt zum Rechnen kein Stack mehr benötigt, d. h. es kommt wie bei
PB eine Fehlermeldung, wenn es nicht mehr genügend Register zur Verfü-
gung hat (glaub relativ selten der Fall und wahrscheinlich nur beim Ver-
wenden von Funktionen in Ausdrücken).
Der Code wird idealerweise mit WordPad geschrieben (fast alle anderen
Editoren kodieren irgendwie falsch). Die Syntax ist ein Gemisch aus Pascal,
C und Basic (in dieser Reihenfolge). Die Webseite zum Projekt gibt es
unter
http://mypage.bluewin.ch/remimeier/recu ... ojekte.htm
wobei diese Seite oftmals nicht allzu aktuell ist (z. B. funktioniert im Moment
das Beispiel nicht ^^).
Einen Direktlink gibt es hier (inkl. Source und Beispielen, sowie magere
Doku):
http://mypage.bluewin.ch/remimeier/zip/compiler2.zip
Um die Qualität für Assembler-Kenner abschätzbar zu machen, gibt es hier
ein kleines Beispiel:
Code: Alles auswählen
a := a + (6 * 7);
a := MessageRequester("hallo", "welt");
a := (a + 3) * (b + (2 - c));
a := (a + 3);Code: Alles auswählen
MOV Ebx, dword 6
IMUL Ebx, dword 7
MOV Esi, dword [Ebp + 0]
ADD Esi, Ebx
MOV dword [Ebp + 0], Esi
PUSH dword s_S2
PUSH dword s_S1
CALL _MessageRequester
MOV dword [Ebp + 0], Eax
MOV Ebx, dword [Ebp + 0]
ADD Ebx, dword 3
MOV Esi, dword 2
SUB Esi, dword [v_c]
MOV Edi, dword [v_b]
ADD Edi, Esi
IMUL Ebx, Edi
MOV dword [Ebp + 0], Ebx
MOV Ebx, dword [Ebp + 0]
ADD Ebx, dword 3
MOV dword [Ebp + 0], Ebxmehr folgen), sowie andere fehlende Optimierungen, welche z. B. PB schon
hat.
Die Version ist frühe Alpha und enthält mit grösster Wahrscheinlichkeit
noch Bugs. Ausserdem werde ich den Compiler wohl nicht mehr grossartig
erweitern, da dieser Funktionsumfang in etwa mein Ziel war für die Arbeit.
Ich hoffe es interessiert ein paar Leute und wünsche allen noch ein frohes
neues Jahr!
greetz
Remi