1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Workshop - Compilerbau für Anfänger und Programmierer

Dieses Thema im Forum "Coders Talk" wurde erstellt von jkallup, 10. August 2010.

  1. jkallup

    jkallup Erfahrenes Mitglied

    Hallo Liebe Tutorials User,

    wer hat Lust bzw. Interesse sich in das Thema Compilerbau einzuarbeiten?
    Geboten wird ein oder mehrere Workshop's zum Thema Compilerbau.
    Im Workshop des 1. Teils wird ein Taschenrechner erarbeitet.
    Auf Wunsch können wir echten Assembler OutputCode für 486er PC's erstellen, um so eigenständige Programme zu erstellen.
    Die Grundlage wird Delphi bzw. FPC (FreePascalCompiler) Pascal Code dienen mit Compiler Tools wie zum Beispiel YACC/LEX um das ganze zu vereinfachen.
    In einen weiteren Teil wird eine Sprache erstellt, die geparst wird.
    mit IF ELSE ENDIF und FOR ENDFOR Schleifen.

    Bitte meldet Euch und sagt Wünsche im Anschluß auf diesen Thread.
    Mfg
    Jens
  2. Matt297

    Matt297 Erfahrenes Mitglied

    Hi, in welcher Form hast du dir den Workshop vorgestellt, also alles ausschließlich in digitaler Form(tutorials.de, Skype...) oder eventuell anders?

    Gruß
    Matt
  3. zerix

    zerix Hausmeister Moderator

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

    Na ich bin dabei.

    Gruß

    Sascha
  4. jkallup

    jkallup Erfahrenes Mitglied

    Hallo Matt,

    der Workshop wird Live und für User/Nutzer des tutorials.de Forum/Hemeinschaft kostenos mit der gewphnten AdobeConnect Software über das Internet abgehalten.
    Alles was Du brauchst ist eine scgbelle Internetanbindung und den FlashPlayer.
    Als Einstiegsprogramm wird ein Taschenrechner erarbeitet, nicht etwa ein Programm bei dem man Buttona klicken wird, sondern eine Textdatei geparst (d.h. übersetzt wird).
    Dabei wird nicht nur 2 + 3 gerechnet, sondern auch 2 + 3 * 4 (=14 also Punkt vor Strichrechnung beachtet.
    Als 2. Teil wird eine bestehende Sprache erarbeitet, die es erlaubt Texte auszugeben und evtl. wenn es die Zeit zulässt Kontrollstrukturen behandelt werden.
    Hierfür wird dann assembler verwendet, der einfach halber in der Form eines Kellerautomaten also nur sowas wie push oder ein wenig floaz point instructions.
    Ich versuche alles Anfängerfreundlich zu gestalten
    An Programmen kömmen natürlich nur kostenlose zur Anwendung.
    so zum Beispiel der FPC, yacc/lex von Albert Gräf, der gcc und nasm 32 bit gggf lazarus/delphi

    Gruß
    Jens
    Zuletzt bearbeitet: 11. August 2010
  5. Dragosani

    Dragosani Gast

    Gründsätzlich hätte ich daran durchaus interesse. Wäre klasse, wenn man bei dem Workshop darauf achten würde, dass es ausserhalb von normalen Office-Zeiten liegt :)
  6. jkallup

    jkallup Erfahrenes Mitglied

    klar, habe den Admins, die die Plattform zur Verfügung stellen vorgeschlagen, das ganze am Wochende zu machen oder dann halt in der Woche ab 18 Uhr ,,,,
  7. ComFreek

    ComFreek Mod | @comfreek Moderator

    Ich hätte auch Interesse, obwohl ich mich nicht mit Delphi & Co. auskenne.
    Ich wollte schon immer einen Compiler bauen ;)
  8. Dragosani

    Dragosani Gast

    Sehr gut :)
    Geht mir auch so, Delphi/Pascal ist nicht meine Welt, aber einen Compiler würde ich auch gern mal testen.
  9. Matt297

    Matt297 Erfahrenes Mitglied

    Hey gut, dann bin ich auch dabei.
    Zuletzt bearbeitet: 11. August 2010
  10. stonetech

    stonetech Grünschnabel

    Hallo allerseits,

    bin auch dabei, wollte schon immer wissen wie so was geht.
  11. jkallup

    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
  12. Avedo

    Avedo Erfahrenes Mitglied

    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
  13. zerix

    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 sagt Danke.
  14. jkallup

    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
  15. ComFreek

    ComFreek Mod | @comfreek Moderator

    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. ;)
  16. zerix

    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.
  17. jkallup

    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: 12. August 2010
  18. zerix

    zerix Hausmeister Moderator

    Ich sagte, dass es mir lieber wäre, nicht dass es sein muss. ;-)

    Gruß

    Sascha
  19. jkallup

    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
  20. ComFreek

    ComFreek Mod | @comfreek Moderator

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

    Code (Text):
    1.  
    2. var
    3. FMyStringListe: TStringList; // Objekt von Klasse TStringList deklarieren
    4. begin
    5. FMyStringListe := TStringList.Create;  // Speicher für das Objekt reservieren
    6. ....
    7. FMyStringListe.Add('push 1');              // Wert hinzufügen
    8. FMyStringListe.Add('call _function');    // Wert hinzufügen
    9. ....
    10. FMyStringListe.SaveToFile('output.asm');   // Als Assembler Datei speichern
    11. FMyStringListe.Free;                            // Reservierten Speicher freigeben
    12. end;
    13.  
    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: 12. August 2010

Diese Seite empfehlen