CX를 구체화하고 디코더 내보내기
저장된 작은 CX 명령어 정의로 디코더와 Markdown 참조 문서를 만드세요.
Linux의 Altifigence CLI 0.1.9는 ISA 작업 시 표준 입력에서 CX 소스를 읽어요. ADD 명령어 하나로 시작하면 명령어 형식, 레지스터 피연산자, 인코딩, 실행 표현식을 함께 확인할 수 있어요. 다음 소스를 작업 디렉터리에 add.cx로 저장하세요. 레지스터 파일은 각각 너비가 32비트인 레지스터 32개를 포함하며, x0은 0으로 읽혀요.
종료 상태가 0인지 확인한 뒤 저장된 결과를 읽으세요. 표준 오류를 별도로 보관하고 아래에 설명한 결과 필드를 확인하세요.
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
}R 형식은 모든 인코딩 필드에 명시적인 비트 범위를 할당해요. ADD는 opcode, funct3, funct7 값을 고정하고 소스 및 목적지 레지스터는 각 이름에 해당하는 필드를 차지해요. 어셈블리 표기는 x 뒤에 레지스터 인덱스가 오는 피연산자 형식을 사용해요. 이 소스 파일을 구체화와 두 내보내기의 공통 입력으로 보관하세요.
구체화하고 내보내기
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먼저 구체화를 실행하고 JSON 결과가 ok: true인지 확인한 뒤 내보내세요. 소스 오류는 ok: false와 함께 diagnostics에 나타나요. 디코더 내보내기는 SystemVerilog를, 참조 문서 내보내기는 Markdown을 선택해요. 저장된 명령 출력에는 확인할 수 있는 생성 결과가 들어 있어요. 나중에 변경 사항의 출처를 추적할 수 있도록 이 결과들 옆에 add.cx를 보관하세요. 구체화 결과가 ok: false이면 진단을 참고해 해당 파일을 수정하고 구체화를 다시 실행한 다음, 수정된 버전에서 두 출력을 다시 생성하세요.
내보내기 결과 확인하기
디코더 출력은 JSON 내보내기 결과예요. 선택된 이 필드들은 생성된 파일을 식별하며, content에는 SystemVerilog 텍스트가 들어 있어요. 참조 문서 결과는 filename으로 cx_reference.md를 사용하고 content에 Markdown 텍스트를 포함해요.
{"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}SystemVerilog 내보내기에 --disassembler를 추가했을 때 disassembler export supports C and Rust라는 오류가 발생하면 --disassembler를 제거하고 제시된 SystemVerilog 명령을 다시 실행하세요.