Workshop - Compilerbau für Anfänger und Programmierer

jkallup

Erfahrenes Mitglied
Hallo,

wer dann Lust und Laune hat, der kann dann bei meinen gegenwärtigen Projekt mitmachen.
Dort geht es dann darum die dBL Sprache mit ide und compiler umzusetzen.,
d.h. ich versuche ein Team zu bilden.
wer also mitmachen will und sich erstmal die Grundlagen anschauen will ist herzlichst eingeladen.

Gruß
Jens
 
B

Bgag

Ich fände es ehrlich gesagt auch spannender, wenn die Compiler mit C oder C++ implementiert würden, da ich keinen Plan von Pascal und Delphi habe, wobei das auch nicht wirklich ein Problem darstellen dürfte. So stark unterscheiden sich die meisten Sprachen ja nun nicht.

Besonders interessant fände ich in Bezug auf die mathematischen Ausdrücke noch die Verarbeitung und Organisation von Variablen und Funktionen, wie zum Beispiel sin(), sqrt() oder fac().

Liebe Grüße,

Andreas
 

zerix

Hausmeister
Moderator
Workshop - Compilerbau für Anfänger ...

Ich werd mir mal deinen Workshop anschauen, vielleicht mache ich dann bei deinem Projekt mit.

Gruß

Sascha
 

jkallup

Erfahrenes Mitglied
Hallo Avedo,

Deinen Wunsch können wir (ich) gerne nachkommen. Mal sehen ob das mit der Zeit hinkommt und ich ich genügend Ressourcen bekomme.
habe mir das so vorgestellt, das der Compiler in Pascal geschrieben wird, der dann nasm Assembler produziert, der auf eine C/C++ DLL zugreift, wo die Funktionen drin szehen.
Somit wird Einblick in Pascal, Assembler, C/C++ und die Erstellung von DLL mittels dem gcc gegeben/vorgestellt.
Dabei gehe ich auf die Plattform Vista 32Bit aus mit dem MingW GCC Compiler und Tools.

Gruß
Jens
 

ComFreek

Mod | @comfreek
Moderator
Ich fände es ehrlich gesagt auch spannender, wenn die Compiler mit C oder C++ implementiert würden, da ich keinen Plan von Pascal und Delphi habe, wobei das auch nicht wirklich ein Problem darstellen dürfte. So stark unterscheiden sich die meisten Sprachen ja nun nicht.
Zum Teil auch, weil Windows mit C programmiert ist. Aber ich denke der Schwerpunkt liegt darin, einen Quelltext in Assembler umzuwandeln. Aber wenn's mit C und C++ implementiert würde, dann würde ich mich natürlich freuen. ;)
 

zerix

Hausmeister
Moderator
Ich denke mal an den Ressourcen wird es nicht liegen, da wirst du genug Zeit haben, falls du den Connect-Raum meinst.

C/C++ wäre mir natürlich auch lieber. ;-)

Gruß

Sascha

EDIT: Du solltest vielleicht auch noch eine Liste hier einstellen, welche Software benötigt wird, mit Links wo man sie beziehen kann. So gibt es zu deinem Workshop keine Probleme und alle sollten schon vorbereitet sein.
 

jkallup

Erfahrenes Mitglied
Hallo,

leider habe ich mich schon auf Pascal eingestellt. Der einfachhalt halber habe ich vor, einige Klassen, die Delphi/Lazarus Pascal zur Verfügung stellen zu nutzen.
Darunter fallen zum Beispiel die Nutzung der Klasse TStringGrid, um Variablen, bzw. Funktionen zu händeln.
Es dürfte aber sicherlich keine Schwierigkeiten für den fortgeschrittenen Programmierer sein, die gleichen Klassen selbst zu implementieren. - Ist halt eine Gewöhnungssache von mir die doch durchaus guten Turbo Klassen zu nutzen, da sie sehr einfach sind..

Ein kleines Beispiel:

var
FMyStringListe: TStringList;
begin
FMyStringListe := TStringList.Create;
....
FMyStringListe.Add('push 1');
FMyStringListe.Add('call _function');
....
FMyStringListe.SaveToFile('output.asm');
FMyStringListe.Free;
end;


StringListen haben den Vorteil, das diese so gross werden können wie Speicher vorhanden ist.
Strings hingegen nur 255 Zeichen lang sein können bzw. sollten.
Klar man könnte dann auf AnsiString umsatteln aber der weitere Vorteil von StringListen ist, das man unter Pascal Objekte mit speichern kann, oder vielmehr Pointer auf Objekte. Und das macht es gerade interessant, da man schnell nach diesen Objekt(namen) suchen kann - siehe Variablen und Funktionen.

Gruß
Jens
 
Zuletzt bearbeitet:

jkallup

Erfahrenes Mitglied
Hallo Sascha,

ja klar, da hast Du recht, hier mal eine Liste mit Links:
auf alle Fälle wird ein Pascal Compiler benötigt, vortzgsweise kann das der

FPC - FreePascalCompiler sein, der hier gesaugt werden kann:
http://www.freepascal.org/download.var

dann wird noch der NASM benötigt:
http://sourceforge.net/projects/nasm/

der MinGW GCC (eigentlich nur fürs binden der exe'n benötigt)::
http://sourceforge.net/projects/mingw/files/

sowie das Yacc/Lex package von Albert Gräfe:
unten bei Free Software:
http://www.musikwissenschaft.uni-mainz.de/~ag/ag.html

für die Darstellung einer GUI habe ich das Qt-Framework gewählt, da dieses sehr einfach ist:
http://qt.nokia.com/products/

das dürfte es erstmal sein, wenn nochwas fehlt füge ich es der Liste an.

Gruß
Jens
 

ComFreek

Mod | @comfreek
Moderator
Nein, muss nicht sein, aber ich denke man kann sich bei den oben genannten Befehlen schon was denken, wie:

Code:
var
FMyStringListe: TStringList; // Objekt von Klasse TStringList deklarieren
begin
FMyStringListe := TStringList.Create;  // Speicher für das Objekt reservieren
....
FMyStringListe.Add('push 1');              // Wert hinzufügen
FMyStringListe.Add('call _function');    // Wert hinzufügen
....
FMyStringListe.SaveToFile('output.asm');   // Als Assembler Datei speichern
FMyStringListe.Free;                            // Reservierten Speicher freigeben
end;

Edit: So ein Pech. Ich habe seit einigen Wochen das Arbeiten mit dem wxWidgets-GUI-Framework angefangen. Und jetzt kommt Qt.

EDIT2: Gibt es keinen Free-Pascal-Compiler für AMD64 Windows Vista 32-Bit?
 
Zuletzt bearbeitet: