Elaborasikan CX dan ekspor decoder

Ubah definisi instruksi CX kecil yang disimpan menjadi decoder dan referensi Markdown.

Altifigence CLI 0.1.9 di Linux membaca sumber CX native dari masukan standar untuk operasi ISA. Mulai dengan satu instruksi ADD agar Anda dapat memeriksa format instruksi, operand register, encoding, dan ekspresi eksekusi secara bersamaan. Simpan sumber berikut sebagai add.cx di direktori kerja Anda. Berkas register berisi 32 register, masing-masing selebar 32 bit, dan x0 terbaca sebagai nol.

Pastikan status keluar bernilai 0 sebelum membaca hasil yang disimpan. Simpan keluaran kesalahan standar secara terpisah dan periksa bidang hasil yang dijelaskan di bawah ini.

Simpan instruksi 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
}

Format R menetapkan rentang bit eksplisit untuk setiap bidang encoding. ADD menetapkan nilai opcode, funct3, dan funct7, sementara register sumber dan tujuan menempati bidang bernamanya. Penulisan assembly-nya menggunakan format operand x yang diikuti indeks register. Simpan berkas sumber ini sebagai masukan bersama untuk elaborasi dan kedua ekspor.

Elaborasikan dan ekspor

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.txt

Jalankan elaborasi terlebih dahulu dan periksa bahwa hasil JSON-nya memiliki ok: true sebelum mengekspor. Kesalahan sumber muncul di diagnostics dengan ok: false. Ekspor decoder memilih SystemVerilog; ekspor referensi memilih Markdown. Keluaran perintah yang disimpan memuat hasil yang dihasilkan untuk diperiksa. Simpan add.cx di samping hasil ini agar perubahan berikutnya dapat ditelusuri kembali ke sumbernya. Jika elaborasi melaporkan ok: false, gunakan diagnostiknya untuk memperbaiki berkas tersebut, ulangi elaborasi, dan hasilkan kembali kedua keluaran dari versi yang telah diperbaiki.

Periksa hasil ekspor

Keluaran decoder adalah hasil ekspor JSON. Bidang-bidang pilihan ini mengidentifikasi berkas yang dihasilkan; content memuat teks SystemVerilog-nya. Hasil referensi menggunakan filename cx_reference.md dan memuat teks Markdown di 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}

Jika penambahan --disassembler pada ekspor SystemVerilog menghasilkan kesalahan disassembler export supports C and Rust, hapus --disassembler dan ulangi perintah SystemVerilog yang ditampilkan.