Beispiel Compiler [geschlossen]

8

Ich suche nach dem Quellcode eines Compilers, der in der Lage ist, Win32-Programme aus einem Eingabeprogramm in einer Programmiersprache zu erstellen (es spielt keine Rolle, je einfacher, desto besser)

Aber ich kann nichts für mich finden und große Compiler wie GCC machen mich extrem verwirrt, da sie so viele Funktionen haben, von denen ich nicht weiß, wo ich anfangen soll.

  • Gibt es einen OpenSource Win32 Mikro-Compiler für einige Programmiersprachen da draußen, den ich mir ansehen könnte?
saf 12.04.2010, 17:12
quelle

7 Antworten

4

Ссылка wählte eine mit dem Lizenztyp "open source"

    
Andrey 12.04.2010 17:16
quelle
2

Ich würde vorschlagen, ein Compiler-Lehrbuch zu lesen. Sie erklären alle erforderlichen Komponenten eines Compilers und entwickeln normalerweise einen Compiler von Anfang bis Ende.

Ich besitze eine Kopie der modernen Compiler-Implementierung in Java aus meinem Compiler-Kurs und bin ziemlich ruhig zufrieden damit.

    
Ben S 12.04.2010 17:16
quelle
2

Versuchen Sie zu verstehen, wie man einen Compiler erstellt, oder versuchen Sie zu erfahren, wie eine Win32-Programmdatei intern aussieht?

Wenn erstere dann ein Buch darüber liest, wie man einen Compiler erstellt, ist das viel effizienter als der Versuch, den Quellcode zurückzuentwickeln. Compiler sind anders als alles, was Sie je gesehen haben, und es hilft wirklich, wenn ein Autor Sie durch die Prinzipien und gebräuchlichen Techniken und Tools führt. Es lohnt sich auch darauf hinzuweisen, dass Compiler in Phasen aufgebaut werden und erst gegen Ende der Implementierung müssen Sie Kenntnisse über die CPU und das Betriebssystem haben, auf die Sie abzielen. Wenn Sie mit der Konstruktion von Compilern noch nicht vertraut sind, haben Sie viel zu lernen, bevor Sie zu diesem Zeitpunkt kommen.

Wenn Sie jedoch das Format von ausführbaren Win32-Dateien verstehen möchten, müssen Sie den x86- (oder x64-) Assemblercode und das Portable Execution (PE) -Dateiformat (das von Windows für ausführbare Dateien verwendet wird) verstehen. Für eine Einführung in den x86-Assemblercode empfehle ich Dr. Paul Carters exzellentes "PC Assembly Language" -freies eBook und für PE I Fange hier an Ссылка und Ссылка

    
Andrew O'Reilly 12.04.2010 18:33
quelle
0

gas kann die Assemblersprache in Objektcode umwandeln, wobei ld kann dann mit den entsprechenden Laufzeiten verlinken, um ein Programm zu generieren.

    
Ignacio Vazquez-Abrams 12.04.2010 17:16
quelle
0

Wenn Sie lernen möchten, wie Compiler arbeiten und / oder wie Sie dann programmieren, sollten Sie wirklich ein Buch zu diesem Thema lesen. Wenn Sie jedoch nach Quellcode-Beispielen suchen, probieren Sie Pascal-Compiler-Beispiele wie dieses aus .

Pascal hat eine etwas einfache Grammatik und ist in vielen Büchern implementiert.

    
Bruno Brant 12.04.2010 17:26
quelle
0

Die einfachste Programmiersprache ist Assembly, x86-Assembly, um genau zu sein. Der berühmteste Assembler, NASM, ist Open-Source; Sie können es unter folgender Adresse herunterladen:

Ссылка

NASM hat Makros, die tatsächlich in Assembler-Anweisungen "kompiliert" werden. Obwohl es keine vollwertige Sprache ist, konzentriert es sich auf die Grundlagen.

    
Pindatjuh 12.04.2010 17:50
quelle
0

Ich würde vorschlagen, nach einer Pascal, C oder SmallC Compilerquelle für MS-DOS (16-bit ). Insbesondere wenn sie sich auf den 16-Bit-Flat-Real-Modus beschränken (& lt; = 64 KB Speichermodus), sollten sie ziemlich einfach sein.

Die Unterstützung für den segmentierten Real-Modus fügt eine große Menge an Komplexität hinzu, die am besten zu vermeiden ist, und ist für 32-Bit-Flat-Protected-Mode-Programme (32-Bit-Programmierung außerhalb des Betriebssystems) irrelevant.

Für einen Nicht-x86-Prozessor ist das Beispielprogramm für Jack Crenshaws Artikelserie "Let's Build a Compiler " ein Pascal-ähnlicher Syntax-Compiler, der auf den Motorola MC68000 16/32-Bit-Prozessor abzielt. Es gibt auch Marcel Hendrix in Forth auf win32 Version der Serie .

Es gibt auch den TCC - Tiny C Compiler, der die PE-i386-Ausgabe (d. h. Win32) unterstützt.

Obwohl Sie sich nicht die Mühe machen könnten, den gesamten SO-Link zu lesen, den Firas Assaad in den Kommentaren gegeben hat, der alle bis auf einen dieser Links enthält, glaube ich, dass Sie den Quellcode eines Compilers fürchterlich lange finden werden.

    
mctylr 12.04.2010 18:11
quelle