Elaborare CX ed esportare un decoder
Trasforma una piccola definizione di istruzione CX salvata in un decoder e in un riferimento Markdown.
Altifigence CLI 0.1.9 su Linux legge il sorgente CX nativo dall'input standard per le operazioni ISA. Inizia con una singola istruzione ADD per poter ispezionare insieme il formato dell'istruzione, gli operandi registro, la codifica e l'espressione di esecuzione. Salva il sorgente seguente come add.cx nella directory di lavoro. Il banco di registri contiene 32 registri, ciascuno largo 32 bit, e la lettura di x0 restituisce zero.
Verifica che lo stato di uscita sia 0 prima di leggere un risultato salvato. Conserva separatamente l'output di errore standard e ispeziona i campi del risultato descritti di seguito.
Salvare un'istruzione 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
}Il formato R assegna a ogni campo di codifica un intervallo di bit esplicito. ADD fissa i valori di opcode, funct3 e funct7, mentre i registri sorgente e destinazione occupano i rispettivi campi denominati. La sintassi assembly utilizza il formato dell'operando x seguito dall'indice del registro. Conserva questo file sorgente come input condiviso per l'elaborazione e per entrambe le esportazioni.
Elaborare ed esportare
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.txtEsegui prima l'elaborazione e verifica che il risultato JSON contenga ok: true prima di esportare. Gli errori nel sorgente compaiono in diagnostics con ok: false. L'esportazione del decoder seleziona SystemVerilog; l'esportazione del riferimento seleziona Markdown. L'output salvato del comando contiene il risultato generato da ispezionare. Conserva add.cx accanto a questi risultati per poter ricondurre le modifiche successive al relativo sorgente. Se l'elaborazione segnala ok: false, utilizza il messaggio diagnostico per correggere il file, ripeti l'elaborazione e rigenera entrambi gli output dalla versione corretta.
Ispezionare il risultato dell'esportazione
L'output del decoder è un risultato di esportazione JSON. Questi campi selezionati identificano il file generato; content contiene il relativo testo SystemVerilog. Il risultato del riferimento utilizza filename cx_reference.md e contiene il testo Markdown 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}Se l'aggiunta di --disassembler all'esportazione SystemVerilog produce l'errore disassembler export supports C and Rust, rimuovi --disassembler e ripeti il comando SystemVerilog mostrato.