机器模式下mret和ret指令有什么区别?

sni*_*per 5 riscv

当RISC-V核心工作在机器模式时,mret和ret指令有什么区别吗?

小智 5

  1. ret是伪指令,实际上是jalr指令,而mret是实指令。 在此输入图像描述
  1. 它们用于不同的情况。ret用于从正常函数返回,而mret用于从陷阱(异常或中断)返回,有一些副作用。从RISC-V特权文档来看,

MRET、SRET 或 URET 指令分别用于从 M 模式、S 模式或 U 模式下的陷阱返回。当执行xRET指令时,假设xPP保存值y,则x IE被设置为x PIE;特权模式改为y;x PIE 设置为 1;xPP 设置为 U(如果不支持用户模式则设置为 M)。