Elaborar CX e exportar um decodificador
Transforme uma pequena definição de instrução CX salva em um decodificador e uma referência em Markdown.
O Altifigence CLI 0.1.9 no Linux lê o código-fonte CX nativo da entrada padrão para operações ISA. Comece com uma única instrução ADD para inspecionar juntos o formato da instrução, os operandos de registrador, a codificação e a expressão de execução. Salve o código-fonte a seguir como add.cx no seu diretório de trabalho. O banco de registradores contém 32 registradores, cada um com 32 bits de largura, e a leitura de x0 retorna zero.
Exija o status de saída 0 antes de ler um resultado salvo. Mantenha a saída de erro padrão separada e inspecione os campos do resultado descritos abaixo.
Salvar uma instrução 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
}O formato R atribui um intervalo explícito de bits a cada campo de codificação. ADD fixa os valores de opcode, funct3 e funct7, enquanto os registradores de origem e destino ocupam seus campos nomeados. Sua representação em assembly usa o formato de operando x seguido do índice do registrador. Mantenha esse arquivo-fonte como entrada compartilhada para a elaboração e ambas as exportações.
Elaborar e exportar
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.txtExecute a elaboração primeiro e verifique se o resultado JSON contém ok: true antes de exportar. Erros no código-fonte aparecem em diagnostics com ok: false. A exportação do decodificador seleciona SystemVerilog; a exportação da referência seleciona Markdown. A saída salva do comando contém o resultado gerado para inspeção. Mantenha add.cx junto desses resultados para que alterações posteriores possam ser rastreadas até sua origem. Se a elaboração informar ok: false, use seu diagnóstico para corrigir esse arquivo, repita a elaboração e gere novamente ambas as saídas a partir da versão corrigida.
Inspecionar o resultado da exportação
A saída do decodificador é um resultado de exportação em JSON. Estes campos selecionados identificam o arquivo gerado; content contém seu texto SystemVerilog. O resultado da referência usa o filename cx_reference.md e contém o texto Markdown em 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 adicionar --disassembler à exportação SystemVerilog produzir o erro disassembler export supports C and Rust, remova --disassembler e repita o comando SystemVerilog mostrado.