Élaborer du CX et exporter un décodeur
Transformez une petite définition d’instruction CX enregistrée en décodeur et en référence Markdown.
Altifigence CLI 0.1.9 sous Linux lit le source CX natif depuis l’entrée standard pour les opérations ISA. Commencez par une seule instruction ADD afin d’examiner ensemble le format d’instruction, les opérandes de registre, l’encodage et l’expression d’exécution. Enregistrez le source suivant dans add.cx, dans votre répertoire de travail. Le banc de registres contient 32 registres de 32 bits chacun, et la lecture de x0 renvoie 0.
Exigez un statut de sortie 0 avant de lire un résultat enregistré. Conservez la sortie d’erreur standard séparément et examinez les champs du résultat décrits ci-dessous.
Enregistrer une instruction CX
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
}Le format R attribue à chaque champ d’encodage une plage de bits explicite. ADD fixe les valeurs opcode, funct3 et funct7, tandis que les registres source et destination occupent leurs champs nommés. Sa notation assembleur utilise le format d’opérande x suivi de l’indice du registre. Conservez ce fichier source comme entrée commune pour l’élaboration et les deux exports.
Élaborer et exporter
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.txtExécutez d’abord l’élaboration et vérifiez que son résultat JSON contient ok: true avant d’exporter. Les erreurs de source figurent dans diagnostics avec ok: false. L’export du décodeur sélectionne SystemVerilog ; l’export de référence sélectionne Markdown. La sortie de commande enregistrée contient le résultat généré pour inspection. Conservez add.cx à côté de ces résultats afin de pouvoir rattacher les modifications ultérieures à leur source. Si l’élaboration signale ok: false, utilisez son diagnostic pour corriger ce fichier, répétez l’élaboration et régénérez les deux sorties depuis la version corrigée.
Examiner le résultat de l’export
La sortie du décodeur est un résultat d’export JSON. Ces champs sélectionnés identifient le fichier généré ; content contient son texte SystemVerilog. Le résultat de référence utilise filename cx_reference.md et contient le texte Markdown dans 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}Si l’ajout de --disassembler à l’export SystemVerilog produit l’erreur disassembler export supports C and Rust, supprimez --disassembler et répétez la commande SystemVerilog présentée.