Einen Assembler schreiben, brauche Hilfe [geschlossen]

8

Ich schreibe einen 8086 Assembler für ein College-Projekt. Ich habe Material über Compilerdesign im Internet gelesen und lese das "Drachenbuch" von Compilern. Aber das Problem ist, dass ich hier nicht viel über den zusammensetzenden (generierenden Objektcode) Teil finden konnte. Gibt es gute Bücher oder Links für Assembler Design? Wo fange ich an? Ich habe lexikalische Analyse, Parsing und Zwischencode-Generierung durchgespielt.

    
abc def foo bar 05.08.2010, 06:22
quelle

5 Antworten

7

Können Sie einfach eine .com-Datei erstellen und generieren? Es wird in ein Code-Segment bei: 0100 geladen und mit CS, DS, ES und SS ausgeführt, die alle auf dieses Segment zeigen.

Wenn Sie das tun könnten, wird das Generieren von Code viel einfacher.

Ihr Testprogramm wäre einfach

%Vor%     
Mike Warot 05.08.2010, 06:33
quelle
3

Das Drachenbuch ist völlig falsch, weil ein Assembler kein Compiler ist. Die "Grammer" einer Assembler-Zeile ist extrem einfach (reguläre Grammatik - nicht kontextsensitiv).

Der Codegenerierungsteil für einen Assembler ist fast nicht vorhanden. Holen Sie sich ein gutes Nachschlagewerk über die Opcodes Ihrer Ziel-CPU und generieren Sie einfach die Bytes wie erklärt.

Da sind ein paar nette einfache Assembler da draußen und du solltest sie dir anschauen. Lernen durch Lesen von Code ist eine sehr effektive Möglichkeit für ein College-Projekt. Sie werden es brauchen, weil der Intel Assembler-Code extrem hässlich ist, zumindest wenn Sie einige der Erweiterungen als Ziel haben möchten.

    
Lothar 30.08.2010 06:30
quelle
1

Werfen Sie einen Blick auf Ссылка

    
binW 05.08.2010 06:37
quelle
1

Sie benötigen eine Zuordnung zwischen mnemonischen Anweisungen wie MOV und Opcodes, siehe OpcodeMap . Außerdem benötigen Sie die Information, wie viele Argumente (und Breite der Operatoren) eine Anweisung benötigt (codiert in Bitfeldern, das spart Ihnen viel Zeit, wenn Sie das richtig machen).

Ich bezweifle, dass dir das Drachenbuch viel helfen wird.

Die Kunst des MONTAGE SPRACHE PROGRAMMIERUNG ist eine gute Referenz.

    
stacker 05.08.2010 07:19
quelle
0

Versuchen Sie, die llvm-Compiler-Infrastruktur zu verwenden.

Ссылка

    
plan9assembler 21.10.2010 10:47
quelle