Seite 2 von 10
Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 09.09.2013 23:29
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...

Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 10.09.2013 17:59
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:
Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 10.09.2013 18:08
von puretom
Danke an euch!
Danke für den Tipp mit dem Bild-Upload.
Ascii-Art habe ich mittlerweile schon herausgefunden.
Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 10.09.2013 20:30
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 ***
Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 15.09.2013 14:31
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. 
--> Die Lösung dieses Problems habe ich jetzt im Scanner als Lernbeispiel eingebaut
Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 16.09.2013 15:38
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
Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 16.09.2013 17:17
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
Gruß
Thomas
Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 16.09.2013 17:24
von Drago
ts-soft hat alles dazu gesagt....

Re: [Tutoroal] Compiler und Virtual Machine
Verfasst: 16.09.2013 19:22
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!
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.
Re: [Tutorial] Compiler und Virtual Machine
Verfasst: 16.09.2013 20:48
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.