[Tutorial] Compiler und Virtual Machine

Hier kannst du häufig gestellte Fragen/Antworten und Tutorials lesen und schreiben.
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von Shardik »

puretom hat geschrieben:Wenn ich ein Bild (oder PDF oder ZIP,...) uppen will, welchen gratis (!) Dienst, bei dem die Bilder auch länger oben bleiben, ohne gelöscht zu werden, würdet ihr mir empfehlen? Am liebsten würde ich mich nicht schon wieder wo registrieren, sondern einfach einen Link nach dem Upload bekommen (das war mal bei Rapidshare zu Dinosaurierzeiten so).
Ich kann Dir zum Bilderhochladen www.abload.de empfehlen. Es ist keine Anmeldung erforderlich, und ich nutze diesen bisher sehr zuverlässigen Dienst seit einiger Zeit, um Beispiel- oder Fehler-Snapshots hochzuladen und in meine Postings einzubinden.

Übrigens: ich finde Dein Tutorial toll und bin schon sehr gespannt auf die Fortsetzungen... :allright:
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von Nino »

@puretom:
Vielen Dank für die viele Arbeit, und für die Sorgfalt die du an den Tag legst.
Das ist bisher ein interessantes Tutorial!
puretom hat geschrieben:@alle
Frage:
ASCII-Art als Abbildung geht ja irgendwie nicht richtig, weil die Schrift proportional ist.
Zwischen [ code ] und [ /code ] ist Schrift mit fester Breite, da geht auch ASCII-Art:

Code: Alles auswählen

         (__)
         (oo)
   /------\/ 
  / |    ||    
 *  /\---/\   
    ~~   ~~ 
puretom
Beiträge: 109
Registriert: 06.09.2013 22:02

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von puretom »

Danke an euch!

Danke für den Tipp mit dem Bild-Upload.

Ascii-Art habe ich mittlerweile schon herausgefunden.
Zuletzt geändert von puretom am 11.09.2013 15:20, insgesamt 2-mal geändert.
Windows 7 und Windows 10 (Laptop), PB 5.62 | Projekt: Tutorial - Compiler und Virtual Machine | vielleicht einmal ein Old School Text-Adventure Tutorial | Neu: Spielereien, Üben rund um OOP in PB
puretom
Beiträge: 109
Registriert: 06.09.2013 22:02

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von puretom »

*** KAPITEL 2 ***

2. Literaturempfehlungen

Gerade in diesem Bereich ist es sehr schwer, wirklich brauchbare Literatur zu finden. Natürlich habe ich mir in all den Jahren viel zusammengelesen und bin dann eben zu meiner ganz persönlichen Hit-Liste gekommen. Viele Bücher in diesem Bereich sind meiner Meinung nach für den Hobbyprogrammierer völlig ungeeignet, obwohl sie tatsächlich immer wieder als Tipps genannt werden. Es stellte sich oft heraus, dass ich nach hunderten Seiten immer noch nicht in der Lage war, einen einfachen Scanner zu programmieren. Woran lag das? Vielleicht an meiner eigenen Unintelligenz und Blödheit, aber ich habe dann mehrfach gelesen im Netz, anderen ging es auch so.


2.1. Literatur, die mir half, meinen ersten Compiler zu programmieren

Diese Bücher halfen mir schließlich (aber auch hier nach vielem Lernen und Herumprobieren) meine ersten lauffähigen Compiler mit Pure Basic zu programmieren.
  • Let's Build a Compiler, by Jack Crenshaw
    Für mich eine Offenbarung nach ewigem Suchen, leider auf Englisch. Ich werde etliches aus diesem Werk hier einfließen lassen.

    Crenshaw kompilert im Original auf Motorola 68000 (der Amiga und der ATARI ST hatten eine CPU auf dieser Grundlage).
    Außerdem verwendet er die Programmiersprache Pascal. Im Netz sah ich auch mal eine C-Version, aber ich gebe offen zu, dass die Pascal-Version für mich lesbarer ist als C.

    http://compilers.iecc.com/crenshaw/ - Die Originalseite, Motorola 68000
    http://www.e-booksdirectory.com/details.php?ebook=1137 - dasselbe als PDF, besser als im Original formatiert
    http://www.pp4s.co.uk/main/tu-trans-comp-jc-intro.html - besser formatiert, übersichtlich und X86-Code, für mich die derzeit beste Version
  • Blunt Axe Basic: Let's Build a Scripting Engine-Compiler, by S. Arbayo
    Wenn man seinen Crenshaw verstanden hat, dann ist das das Werk der Wahl. In C verfasst, daher für mich ungleich schwerer zu lesen, hätte ich es als Erstlingswerk nicht so wirklich verstanden, vor allem wegen der C-mäßigen Stringbehandlung, mit der ich mich halt quäle, aber Geschmäcker sind ja bekanntermaßen verschieden. Aber als Zweitbuch war es toll für mich. Basiert in seinen Techniken sehr stark auf Crenshaw - ist also etwas wie eine Crenshaw-Variante, compilert auf X86-Assembler bzw. interpretiert im ersten Teil den Code als reiner Interpreter (auch eine interessante Variante).
    https://sites.google.com/site/bluntaxebasic/tutor/
  • Compiler Tutorial in Pure Basic, by ?
    Wer seinen Crenshaw verstanden hat, dem wird hier ein kurzes und knappes und sehr gutes Tutorial in Pure Basic (!!!) geliefert, das ich besonders toll finde. Guten Appetit!
    http://pbtut.blogspot.co.at/2009/08/base.html
  • Compiler Construction, by Niklaus Wirth
    Grundlagen und Techniken des Compilerbaus, by Niklaus Wirth
    Das ist der Mann der Eidgenössischen Technischen Hochschule (ETH) Zürich, der Pascal erfunden und programmiert hat. Er hat die englische Version seines Buches auf die ETH-Homepage gestellt. Dieses Buch - als Kaufversion bei Amazon nach wie vor auf Deutsch erhältlich, ich habe es schließlich gekauft - hat mir, nachdem ich meinen Crenshaw gelernt und mit einigen Toy-Compilern schon weiterexperimentiert habe, enorm weitergeholfen, vor allem das Kapitel mit der Virtual Machine (Er compiliert auf eine virtuelle Registermaschine). Wirth ist knapp und dirty, ich hätte ihn ohne Crenshaw so von vornherein nicht verstanden, auf Englisch schon gar nicht, verwendet aber, wenn man unter die Motorhaube schaut, sehr ähnliche und in vielen Bereichen sogar dieselben Compilertechniken wie Crenshaw.
    http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf - Die englische Free-Version
    http://www.amazon.de/Grundlagen-Technik ... 3486243748 - Die deutsche Kaufversion, die neben mir am Tisch liegt.
    (Tipp: in Amazon ins Inhaltsverzeichnis schauen unter "Hier klicken Blick ins Buch" in der rechten Ecke des Fotos des Buchcovers!)
  • Compilers and Compiler Generators an introduction with C++, by P.D. Terry, Rhodes University, 1996
    Vor allem die Kapitel 4, 6 und 7 haben mir beim Thema Virtual Machines und Assembler recht brauchbar weitergeholfen.
    http://www.scifac.ru.ac.za/compilers/conts.htm

2.2. Literatur, die hilfreich ist, wenn man schon eine Ahnung von Compilern hat
  • Game Scripting Mastery, by Alex Varanese
    Eine Bibel, wenn man schon mehrere erfolgreiche Compiler-Gehversuche hinter sich hat und im Lernen voranschreitet. Beginnt auch bei Adam und Eva, ist aber etwas schwerer verständlich als Crenshaw, aber wirklich enorm und unglaublich potent, wenn es um Virtuelle Maschinen, Scripting Systeme für z.B. Ego-Shooter bzw. Role Games oder dergleichen geht, ist ein Grundlagenwerk mit ca. 1272 Seiten und behandelt Compiler und Scripting von Grund auf. Wärmstens zu empfehlen. Durchaus als Einsteigerwerk geeignet, ich empfehle dennoch Crenshaw zuerst, weil er übersichtlicher ist am Beginn der Compilerprogrammiererlaufbahn, zumal Varanese C benutzt und ich persönlich Pascal übersichtlicher finde, aber wie oben gesagt: Geschmäcker ...
    (Tipp: in Amazon ins Inhaltsverzeichnis schauen unter "Look inside" in der rechten Ecke des Fotos des Buchcovers!)
    http://www.amazon.com/Scripting-Mastery ... 1931841578
  • Compiler Design: Virtual Machines, by Reinhard Wilhelm, Helmut Seidl
    Für das Verstehen einer Stack Machine sehr hilfreich. Kapitel 2 und 5 für mich sehr brauchbar.
    (Tipp: in Amazon ins Inhaltsverzeichnis schauen unter "Look inside" in der rechten Ecke des Fotos des Buchcovers!)
    http://www.amazon.com/Compiler-Design-M ... 3642149081
  • Using Peephole Optimization on Intermediate Code, by Andrew S. Tanenbaum, Hans van Staveren, Johan W. Stevenson, Vrije Universiteit, Amsterdam, The Netherlands
    Wenn man seinen Stack Machine Code mit einem Peephole Optimizer optimieren will oder muss, dann ist dieses kurze wissenschaftliche Paper meiner unbedeutenden Meinung nach auch bibelverdächtig. Ich habe mal einige Optimierungen in einem kleinen Testprogramm für mich angetestet, die da in diesem Paper dargestellt werden, und diese funktionierten sehr gut. Empfehlenswert für Stack Machines.
    http://www.nada.kth.se/~mosavian/master ... enbaum.pdf
  • Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages, by Terence Parr
    In Java verfasst, womit ich es persönlich schwer habe. Sicher kein Einsteigerwerk, das Kapitel Stack Machine ist interessant, aber nicht unbedingt notwendig. Brauchbar, wenn man sich schon gut auskennt, aber nicht zwingend erforderlich, war für mich aber interessant.
    http://www.amazon.com/Language-Implemen ... 193435645X

2.3. Literatur, die mir persönlich überhaupt nichts sagte
  • Compilers: Principles, Techniques, and Tools, by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
    Compiler: Prinzipien, Techniken und Werkzeuge, by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman

    Ich möchte hier bitte keinen Glaubenskrieg (Flame War), aber das vielgelobte Drachenbuch aka. Dragon Book hat mir bis heute nicht wirklich weitergeholfen, um ehrlich zu sein.
    Ich führe es vollständigkeitshalber an, weil es in jeder Literaturliste zum Compilerbau zumeist sogar als das Top-Werk auftaucht und dort gemeint wird, das sei die Bibel.

    http://www.amazon.com/Compilers-Princip ... 0321486811 - Englisch
    http://www.amazon.de/Compiler-Prinzipie ... 3827370973 - auf Deutsch
    http://www.pearson-studium.de/main/main ... tID=201305 - auf Deutsch, vom Verlag selber. Unten auf "Probelesen" gehen, dann kann man Inhaltsverzeichnis und ein Kapitel gratis als PDF runterladen.

2.4. Abschließende zusammenfassende Betrachtungen

Die echten Bibeln sind für mich für ...
  • Compilerbau: Crenshaw, Wirth, das PB Tutorial des unbekannten Autors, Varanese
  • Game Scripting: Varanese
  • Virtual Machine allg.: Varanese, Reinhard Wilhelm und Helmut Seidl
  • Virtual Stack Machine: Reinhard Wilhelm und Helmut Seidl und Tanenbaum et al. zum Optimieren
*** KAPITEL 2 ***
Zuletzt geändert von puretom am 27.09.2013 20:08, insgesamt 42-mal geändert.
Windows 7 und Windows 10 (Laptop), PB 5.62 | Projekt: Tutorial - Compiler und Virtual Machine | vielleicht einmal ein Old School Text-Adventure Tutorial | Neu: Spielereien, Üben rund um OOP in PB
puretom
Beiträge: 109
Registriert: 06.09.2013 22:02

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von puretom »

LOGIKFEHLER BEHOBEN:

Alte Meldung von mir lasse ich, falls jemand Interesse am Problem hat:

Anmerkung:

Es geht nicht darum, dass der Scanner nicht funktioniert, das tut er bestens!

Nur wenn das Zeichen "/" in mathematischen Ausdrücken auch die Division werden soll, dann muss ich dafür sorgen, dass der Scanner einfache "/" nicht auffrisst, z.B. für 3/2+4.
Werden ich alsbald ändern, leider muss ich dazu auch alle Debug-Ausdrucke neu machen. (in den Code-Boxen, denn der Scanner soll ja alle einfachen "/" als Other weitergeben, ohne sie zu essen).
Die Veränderung ist schnell durchgeführt, hat mein funktionierender Compiler eigentlich schon gehabt, nur wollte ich alles für das Tutorial neu machen und war so genial, darauf zu vergessen.
In meinem Compiler habe ich genau denselben Fehler gemacht und das später dann gefixt, als ich den mathematischen Scanner gemacht habe und mir das Divisionszeichen abgegangen ist.

Wie vergesslich man sein kann, um einen Fehler 2-mal zu begehen. :lol:


--> Die Lösung dieses Problems habe ich jetzt im Scanner als Lernbeispiel eingebaut
Zuletzt geändert von puretom am 16.09.2013 15:40, insgesamt 2-mal geändert.
Windows 7 und Windows 10 (Laptop), PB 5.62 | Projekt: Tutorial - Compiler und Virtual Machine | vielleicht einmal ein Old School Text-Adventure Tutorial | Neu: Spielereien, Üben rund um OOP in PB
puretom
Beiträge: 109
Registriert: 06.09.2013 22:02

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von puretom »

Version Beta 2mit repariertem "/"-Problem online:

Bitte um Feedback und Hilfe/Unterstützung beim Fehlerkorrigieren, der Übersichtlichkeit halber so:
  • Thread: Code, Tipps, Hilfen, Diskussionen, ...
  • Private Message: Tipp-, Rechtschreib-, Grammatik-, Stilfehler und Ähnliches
Soll ich weitermachen??

Das war viel Arbeit und noch habe ich große Lust, und es macht mir noch großen Spaß.
Falls aber das Tutorial unbrauchbar ist, dann beende ich es.

Also bitte um Feedback und Interesse!

LG Puretom
Zuletzt geändert von puretom am 22.09.2013 16:27, insgesamt 1-mal geändert.
Windows 7 und Windows 10 (Laptop), PB 5.62 | Projekt: Tutorial - Compiler und Virtual Machine | vielleicht einmal ein Old School Text-Adventure Tutorial | Neu: Spielereien, Üben rund um OOP in PB
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von ts-soft »

puretom hat geschrieben:Soll ich weitermachen??

Das war viel Arbeit und noch habe ich große Lust, und es macht mir noch großen Spaß.
Falls aber das Tutorial unbrauchbar ist, dann beende ich es.

Also bitte um Feedback und Interesse!
Selten dämliche Frage, selbstverständlich sollst Du weiter machen :allright:

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Drago
Beiträge: 148
Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von Drago »

ts-soft hat alles dazu gesagt.... :-)

:allright:
puretom
Beiträge: 109
Registriert: 06.09.2013 22:02

Re: [Tutoroal] Compiler und Virtual Machine

Beitrag von puretom »

Vielen Dank für Feedback!

Ich bekomme auch laufend via PM Feedbacks und bitte darum HIER IM THREAD und auch bei den PRIVATE MESSAGES immer den TEIL (EV. KAPITEL, wenn du ganz nett sein willst) hinzuschreiben und natürlich zu QUOTEN/ZITIEREN, auf den sich die Kritik bezieht.

Dann bleibts übersichtlich und ich suche nicht wie das Eichhörnchen die Nüsse! :D

Ich lege mir eine Liste an, wo ich was von den Feedbackpunkten einarbeiten muss, also nur munter weiter!

Mit eurer Hilfe kann das ein ansprechendes Tut werden

LG Puretom

P.S.
Ganz toll wäre, wenn jemand das alles mit allen erdenklichen Eingaben testen könnte, ich habe zwar jeden Stein umgedreht, aber ich wette (das ist doch immer so bei Code), dass eine andere Person als der Programmierer die tollsten Bugs findet
.
Windows 7 und Windows 10 (Laptop), PB 5.62 | Projekt: Tutorial - Compiler und Virtual Machine | vielleicht einmal ein Old School Text-Adventure Tutorial | Neu: Spielereien, Üben rund um OOP in PB
puretom
Beiträge: 109
Registriert: 06.09.2013 22:02

Re: [Tutorial] Compiler und Virtual Machine

Beitrag von puretom »

Mein Tutorial lässt sich plötzlich oft nicht ändern (springt immer wieder auf einen total alten Stand), ich mache einfach mit einem neuen Eintrag weiter.
Windows 7 und Windows 10 (Laptop), PB 5.62 | Projekt: Tutorial - Compiler und Virtual Machine | vielleicht einmal ein Old School Text-Adventure Tutorial | Neu: Spielereien, Üben rund um OOP in PB
Antworten