Simpler Compiler

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Garfield12

Betreff: Simpler Compiler

BeitragDi, Dez 09, 2008 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Zusammen,
ich hab da mal ne Frage:
Was muss ich können, um einen Compiler zu programmieren, welcher einen
simplen Code Bsp:
print "hello"
in eine exe verwandeln kann?
Es ist nur eine Frage soll jetzt niht die neue Programmiersprache 78.9 werden. Hab halt nur interesse, weil das so ziemlich das schwerste Thema der Inforatik ist.
Ich wäre froh wenn ihr mir antworten würdet.
Garfield.next-gen programming language Wink

Abrexxes

BeitragDi, Dez 09, 2008 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kommt drauf an. Wenn du als Basis für denn Maschinencode FASM nimmst reicht es wenn du einen Code in ASM umwandeln kannst um Ihn an FASM weiterzugeben.

Wenn du ohne ASM compiler auskommen willst musst du Knietief in die Scheiße rein, das beinhaltet auch Prozessor Architektur und Speicherlogic. ^^
 

Garfield12

BeitragDi, Dez 09, 2008 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee mit ASM würd fürn Anfang schon reichen, wenn man das Ausbauen will, kann man das ja noch vertiefen.
Also gibst da tuts oder so?
Garfield
 

ChristianK

BeitragDi, Dez 09, 2008 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Buch hier ist ganz gut:
Grundlagen und Techniken des Compilerbaus

Oder diese englische Einführung in den Compilerbau:
http://compilers.iecc.com/crenshaw/

Hier im Forum gab es auch mal ein interessantes Projekt:
https://www.blitzforum.de/foru...hp?t=25797
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Nexhmije

BeitragDi, Dez 09, 2008 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennst du dich mit dem binären Zahlensystem aus? Wenn nicht, fang erst damit an. Dann solltest du dich allgemein mit Prozessoren auseinandersetzen; du musst verstehen wie ein Prozessor einen Befehl ausführt. Dann musst du dir überlegen, wie deine abstrakte Programmiersprache auf diese Prozessor-Befehle "zerteilt" werden können.

Desweiteren musst du dann Speicheraddressierung beherrschen und wissen wie dein Programm nachher mit dem Betriebssystem kommuniziert (zur Ein- und Ausgabe von Daten).

Nachtrag: Wenn du richtig in die Materie einsteigen willst, dann fang mal an zu versuchen die ersten paar Seiten von Donald Knuths Büchern zu verstehen Laughing
 

ChristianK

BeitragDi, Dez 09, 2008 23:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Nexhmije hat Folgendes geschrieben:
Dann solltest du dich allgemein mit Prozessoren auseinandersetzen; du musst verstehen wie ein Prozessor einen Befehl ausführt. Dann musst du dir überlegen, wie deine abstrakte Programmiersprache auf diese Prozessor-Befehle "zerteilt" werden können.

Die Funktionsweise von Prozessoren zu kennen ist natürlich sinnvoll und bei der Codgenerierung auch notwendig, aber bei einem Compiler erstmal völlig uninteressant. Die Entwicklung einer Programmiersprache funktioniert nämlich genau anders herum.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

peacemaker

BeitragMi, Dez 10, 2008 10:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Einen Kompiler zu schreiben ist verdammt viel Arbeit, das kann ich dir sagen.
Vor allem wenn er so Spässe wie print (1*funktion()/2+15*(15/3)) oder so können sollte.

Am besten macht man sowas mit der Rekursives Topdown-Methode. Google mal, ist nicht mal so kompliziert.
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

Mr.Keks

BeitragMi, Dez 10, 2008 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, du redest gerade vom parser, peacemaker, hmm? den kannste in nen paar hundert zeilen schreiben. überhaupt braucht ein compiler nur wenige tausend, würde ich sagen. (man kann danach noch optimieren, bis man doof wird ^^) es bietet sich übrigens an, die erste version deines compilers in einer anderen sprache zu schreiben, bis du irgendwann immer die nächste version in der sprache selbst schreiben kannst, für die du den compiler baust.

@garfield: der witz is: wenn du das nötige kannst, um einen compiler zu bauen, dann weißt du die antwort auf deine frage bzw weißt, wo du sie finden kannst. wenn du es nicht kannst, dann hilft dir auch die antwort nicht.
MrKeks.net

Thunder

Betreff: Re: Simpler Compiler

BeitragDo, Dez 11, 2008 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@EXE Convertieren

Garfield12 hat Folgendes geschrieben:

print "hello"
in eine exe verwandeln kann?



Ich glaube, wenn es wirklich nur simpel sein soll, dass das in EXE convertieren leichter sein sollte als der Compiler selbst. Ich hab mir überlegt:

Code: [AUSKLAPPEN]
1. Compiler Funktion in die Compiler.bb schreiben
2. Lese-Funktion in die Compiler.bb schreiben(dazu später mehr)
3. Compiler.bb in EXE convertieren
(so jetzt die lesefunktion) 4. Die Compiler.exe ließt sich selbst Zeile für Zeile aus bis sie zu einer Zeile
 kommt in der zB. "<Hier beginnt der Code>" steht. Dann ließt sie den Rest aus und übergibt den Rest an    die Compiler-Funktion die das dann compiliert
5. Nur noch ein Programm was die Compiler.exe irgendwo hin kopiert und dann Quelltext hineinschreibt schreiben


dürfte so funktionieren (wie gesagt, wenn es simpel sein soll).
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

tedy

BeitragDo, Dez 11, 2008 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist dann aber kein Compiler...
IMgrunde genommen ist es eine Scriptsprache die einfach asugeführt wird

Thunder

Betreff: Re: Simpler Compiler

BeitragDo, Dez 11, 2008 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Garfield12 hat Folgendes geschrieben:

in eine exe verwandeln kann?


eh nicht. Ich hab mich jetzt nur auf das simple EXE-verwandeln bezogen.

mfg
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group