SSPUSH 未启用相关 CFI 时会怎样?
Zicfiss 指令按官方 Zimop/Zcmop 兼容规则退化,不执行影子栈检查或更新。
SSPUSH 将 x1/x5 链接寄存器值压入向下增长的影子栈。
SSPUSH 以 ssp - XLEN/8 为地址把 x1 或 x5 的返回地址副本写入影子栈;只有影子栈存储成功后,ssp 才提交为该新值。它用于非叶子函数入口,配合普通栈保存返回地址来检测返回地址被篡改。
只显示规范定义的编码、条件和架构可见状态。
SSPUSH 是 Zicfiss 影子栈压入指令;只有完成存储后才更新 ssp。
使用 jal ra, label 或 jalr ra, rs, imm。
结合 «sspush x1» 等实际代码理解该场景。
结合 «sspush x1» 等实际代码理解该场景。
Zicfiss 指令按官方 Zimop/Zcmop 兼容规则退化,不执行影子栈检查或更新。
RISC-V 非特权 ISA 的 Control-flow Integrity 章节定义 LPAD、SSPUSH、SSPOPCHK、SSRDP 和 SSAMOSWAP。