Slide 14
Slide 14 text
Copyright © 2023 Tsukasa OI. All Rights Reserved.
2023-03-16: RISC-V 勉強会@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 を返す
――だけではあるが――