Khai triển CX và xuất bộ giải mã
Chuyển một định nghĩa lệnh CX nhỏ đã lưu thành bộ giải mã và tài liệu tham chiếu Markdown.
Altifigence CLI 0.1.9 trên Linux đọc mã nguồn CX gốc từ luồng nhập chuẩn cho các thao tác ISA. Bắt đầu với một lệnh ADD để có thể kiểm tra cùng lúc định dạng lệnh, toán hạng thanh ghi, mã hóa và biểu thức thực thi. Lưu mã nguồn sau thành add.cx trong thư mục làm việc của bạn. Tập thanh ghi chứa 32 thanh ghi, mỗi thanh ghi rộng 32 bit, và x0 đọc ra giá trị 0.
Chỉ đọc kết quả đã lưu khi trạng thái thoát là 0. Lưu riêng luồng lỗi chuẩn và kiểm tra các trường kết quả được mô tả bên dưới.
Lưu một lệnh 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
}Định dạng R gán cho mỗi trường mã hóa một dải bit tường minh. ADD cố định các giá trị opcode, funct3 và funct7, còn các thanh ghi nguồn và đích chiếm những trường mang tên tương ứng. Cú pháp hợp ngữ sử dụng định dạng toán hạng x theo sau bởi chỉ số thanh ghi. Giữ tệp nguồn này làm đầu vào chung cho quá trình khai triển và cả hai lần xuất.
Khai triển và xuất
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.txtChạy khai triển trước và kiểm tra kết quả JSON có ok: true trước khi xuất. Lỗi nguồn xuất hiện trong diagnostics với ok: false. Việc xuất bộ giải mã chọn SystemVerilog; việc xuất tài liệu tham chiếu chọn Markdown. Đầu ra lệnh đã lưu chứa kết quả được tạo để kiểm tra. Giữ add.cx cạnh các kết quả này để có thể truy ngược những thay đổi sau về nguồn của chúng. Nếu khai triển báo ok: false, sử dụng chẩn đoán để sửa tệp đó, chạy lại khai triển và tạo lại cả hai đầu ra từ phiên bản đã sửa.
Kiểm tra kết quả xuất
Đầu ra bộ giải mã là kết quả xuất JSON. Các trường được chọn này nhận diện tệp được tạo; content chứa văn bản SystemVerilog của tệp. Kết quả tham chiếu sử dụng filename cx_reference.md và chứa văn bản Markdown trong 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}Nếu thêm --disassembler vào lệnh xuất SystemVerilog tạo lỗi disassembler export supports C and Rust, hãy bỏ --disassembler và chạy lại lệnh SystemVerilog được trình bày.