勉強会@Online 14 Zcmp: “超” 圧縮命令 (D 拡張と非互換; 純粋に組込用) 通常の圧縮命令よりさらに圧縮したいというニーズに応えた結果、例えば: cm.popretz {ra,s0-s11}, 112 # RV64_Zcmp: 0xbcf2 (2-bytes) が次の命令列 (16 命令)と同等になる……! ld s11, 104(sp) ld s10, 96(sp) ld s9, 88(sp) ld s8, 80(sp) ld s7, 72(sp) ld s6, 64(sp) ld s5, 56(sp) ld s4, 48(sp) ld s3, 40(sp) ld s2, 32(sp) ld s1, 16(sp) ld s0, 8(sp) ld ra, 0(sp) add a0, zero, zero # a0 := 0 addi sp, sp, 112 # sp += 112 jalr zero, ra, 0 # ret 特に、赤で示した前半部分は割り込みによる中断可 (その場合最初から) 意味的には単純に スタックからレジスタを復元して 0 を返す ――だけではあるが――