Hi Jungs. Hier mal wieder ne tolle Frage von mir =)
Wie könnte man einen eigenen Compiler realisieren? Damit meine ich, ich schreib wie bei Delphi in irgendeine Datei Code rein, die dann meiner vorgegebenen Syntax entspricht, parse das (kein Problem) und mache daraus eine ausführbare Datei (großer Problem =) ). Hat da jemand eine Ahnung?
Danke im Vorraus.
P.S.: Wenn ihr für eure antworten bezahlt werden würdet, ich glaub dann wäret ihr schon längst im Ruhestand =)))
Das geht jedenfalls nicht so einfach wie du dir das vielleicht vorstellst. Du musst auf jeden fall sau gute assembler bzw. sogar direkte maschinensprache kenntnisse haben.
Und selbst dann ist es noch verdammt schwer. Guck mal bei amazon.de.
Da hab ich schon einige Bücher zu diesem Thema gefunden, stichwort "Compilerbau"
Das das net so einfach geht is mir klar =) Ein gutes Assembler Buch besitze ich auch. Assemblerkenntnisse hab ich von meinem kleinen Betriebssystem erlangt, das ich mal vor 6 Monaten geschrieben habe. Was ich nur wissen will ist wie man das theoretisch realisieren könnte einen Compiler zu basteln.
wir haben ein tutorial, das das ein oder andere dazu erklärt: http://www.delphigl.com/main.php?id=2&p ... t2&print=1 wenn du assembler kannst, dürfte es ja kein problem sein, die dort beschriebenen sachen zu übertragen - vielleicht nicht stack only, wie es dort passiert, aber du wirst einiges rausholen können.
um dann nicht nur asm zu haben, sondern amshcienencode, musst du das intel pentium handbook zu rate ziehen, da steht das alles drinne.
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
Dann muss ich doch auch mal antworten h3h3
Soweit ich weiss sollte sich Delphi selbst compilieren ...
(wenn was falsch is bidde nich ausrasten )
hab auf dem gebiet noch nicht rumexperimentiert...
hab das mehrmals gehört...
Falls es dir hilft
cya
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Am Einfachsten tust du dir, wenn du nicht direkt Object Code generierst - sonst musst du dich damit herumschlagen, welcher Linker welches Format versteht, oder gar selbst einen Linker schreiben.
Alles vergebliche Liebesmüh, da es schon tolle Open Source Assembler und Linker gibt, die keinen Wunsch offenlassen - selbst wenn du irgendein abstruses Betriebssystem entwickeln solltest, mit einem Dateiformat das es noch gar nicht gibt.
Am besten generierst du also Assembler Code, den du dann an einen Assembler deiner Wahl weiterleitest.
Wenn dich das Thema interessiert, kannst du dich ja auch von fxPascal inspirieren lassen, das im Prinzip genau das macht (halt nicht für Intel Prozessoren). Wenn du nur eine Inline Programmiersprache für Skripte haben willst, bist du mit einem P-Code Compiler wahrscheinlich ohnehin besser bedient, als wenn du wirklich ausführbare Programme erstellst (leichter wartbar).
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Ich wollte so was auch schon mal machen hatte dann auch schon eine Idee wuste aber schnell nicht mehr weiter(Wahrscheinlich geht es gar nicht). Aber vielleicht könnt ihr die Idee ja ausbauen:
Wie wäre es wenn man mit Hilfe eines Assemblers Befehl in Delphi zu modifiezierbaren Code springt. Das somit erstelle Programm könnte dan das Grundgerüst für neue Anwendugen sein. Ich hoffte mit dem Debug-CPU-Fenster erstmal herauszufinden ob das Programm erst in den Arbeitsspeicher geladen wird oder ob es direkt aus der Datei ausgelesen wird. Wäre es der Arbeitsspeicher könnte z.b "einfach" Text in den Arbeitspeichr laden und zur seiner Position springen. Sollte es die Datei gewesen Sein so müsste der Code der Exe Angefügt werden und ebenfalls dort hin gesprungen werden.
Ich weis das die Idee irre ist aber wenn sie funktionieren würde...
Mfg
IFlo
_________________ Danke an alle, die mir (und anderen) geholfen haben. So weit... ...so gut
Man kann tatsächlich ausführbaren Programmcode in einem String speichern und dann an den Anfang des Strings springen. Für Skripte die zur Laufzeit kompiliert werden oder Ähnliches ist das durchaus eine denkbare Idee.
Die Exe Datei enthält aber noch mehr Informationen als nur den Programmcode, damit sie geladen werden kann. Die daten liegen aber fast genau so im Speicher wie in der Datei. Eine recht genaue Beschreibung gibt es hier:
http://msdn.microsoft.com/msdnmag/issues/02/02/PE/default.aspx und hier
http://msdn.microsoft.com/msdnmag/issues/02/03/pe2/default.aspx
Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.