Why is c.jal RV32C-only?
The C extension defines C.JAL for RV32C; in RV64C the same encoding space is used for C.ADDIW.
RV32C 16-bit CJ jump: add a signed byte offset to PC and write old PC+2 to x1.
RV32 C 2.0/Zca; 16-bit CJ format, with only an offset operand and fixed x1/ra link register.
offset is an even byte displacement from -2048 to 2046; reassemble scattered fields with bit0=0 and interpret the result as signed 12-bit.
Target=old PC+offset; x1=old PC+2, with 32-bit address wraparound. RV64 uses the same encoding space for C.ADDIW.
c.jal is an RV32C-only CJ-format instruction: it adds the sign-extended, 2-byte-aligned PC-relative offset to pc and writes pc+2 to x1/ra.
Shows only manual-defined compressed fields, operands, and architectural state; it does not model a pipeline, cache, or timing.
imm[11:0]=000100000000 (bit0=0); sext12 -> 256 bytes; x1 fixed
c.jal is an RV32C-only CJ-format instruction: it adds the sign-extended, 2-byte-aligned PC-relative offset to pc and writes pc+2 to x1/ra.
RV32 C/Zca, old PC=0x1000: c.jal 256 gives PC=0x1100 and x1/ra=0x1002.
The C extension defines C.JAL for RV32C; in RV64C the same encoding space is used for C.ADDIW.
No. It is a 16-bit encoded instruction defined by the C extension.