Elaborieren Sie CX und exportieren Sie einen Decoder
Wandeln Sie eine kleine gespeicherte CX-Instruktionsdefinition in einen Decoder und eine Markdown-Referenz um.
Altifigence CLI 0.1.9 unter Linux liest für ISA-Operationen nativen CX-Quelltext von der Standardeingabe. Beginnen Sie mit einer einzelnen ADD-Instruktion, damit Sie Instruktionsformat, Registeroperanden, Codierung und Ausführungsausdruck gemeinsam prüfen können. Speichern Sie den folgenden Quelltext als add.cx in Ihrem Arbeitsverzeichnis. Die Registerdatei enthält 32 Register mit jeweils 32 Bit Breite, und x0 wird als null gelesen.
Setzen Sie den Exit-Status 0 voraus, bevor Sie ein gespeichertes Ergebnis lesen. Bewahren Sie die Standardfehlerausgabe separat auf und prüfen Sie die unten beschriebenen Ergebnisfelder.
Speichern Sie eine CX-Instruktion
arch CX-Core {
word = 32 bits
address = 32 bits
endian = little
}
regfile gpr {
count = 32
width = 32 bits
x0 = hardwired 0
}
format R = 32 bits {
funct7 @ 31..25
rs2 @ 24..20
rs1 @ 19..15
funct3 @ 14..12
rd @ 11..7
opcode @ 6..0
}
operand gpr (5 bits) {
reads gpr[@]
writes gpr[@]
asm "x{@}"
}
instruction ADD uses R {
reads rs1, rs2 : gpr
writes rd : gpr
encode opcode=0b0110011, funct3=0b000, funct7=0b0000000
asm "add {rd}, {rs1}, {rs2}"
exec rd <- rs1 +wrap rs2
}Das Format R weist jedem Codierungsfeld einen expliziten Bitbereich zu. ADD legt die Werte von opcode, funct3 und funct7 fest, während die Quell- und Zielregister ihre benannten Felder belegen. Seine Assembler-Schreibweise verwendet das Operandenformat x, gefolgt vom Registerindex. Bewahren Sie diese Quelldatei als gemeinsame Eingabe für die Elaborierung und beide Exporte auf.
Elaborieren und exportieren Sie
alti isa elaborate < add.cx
alti isa export-decoder --language sv < add.cx > decoder-result.txt
alti isa export-reference --format md --title "ADD reference" < add.cx > reference-result.txtFühren Sie zuerst die Elaborierung aus und prüfen Sie vor dem Export, ob ihr JSON-Ergebnis ok: true enthält. Quelltextfehler erscheinen in diagnostics mit ok: false. Der Decoder-Export wählt SystemVerilog aus; der Referenzexport wählt Markdown aus. Die gespeicherte Befehlsausgabe enthält das erzeugte Ergebnis zur Prüfung. Bewahren Sie add.cx neben diesen Ergebnissen auf, damit spätere Änderungen auf ihren Ursprung zurückgeführt werden können. Wenn die Elaborierung ok: false meldet, korrigieren Sie diese Datei anhand der Diagnose, wiederholen Sie die Elaborierung und erzeugen Sie beide Ausgaben aus der korrigierten Version neu.
Prüfen Sie das Exportergebnis
Die Decoder-Ausgabe ist ein JSON-Exportergebnis. Diese ausgewählten Felder identifizieren die erzeugte Datei; content enthält ihren SystemVerilog-Text. Das Referenzergebnis verwendet filename cx_reference.md und enthält den Markdown-Text in content.
{"schema":"cx-export/1","ok":true,"kind":"decoder","format":"sv","filename":"cx_decoder.sv","mime_type":"text/x-systemverilog","word_bits":32,"instruction_count":1}Wenn das Hinzufügen von --disassembler zum SystemVerilog-Export den Fehler disassembler export supports C and Rust erzeugt, entfernen Sie --disassembler und wiederholen Sie den gezeigten SystemVerilog-Befehl.