它是用户态普通指令吗?
不是。DRET 只在 D-mode 且不从 Program Buffer 执行时有定义;它不是用户态汇编指令。
从调试模式返回:PC←dpc,恢复 dcsr 记录的 prv/v(以及适用时的 pelp)状态。仅在 D-mode 且不从 Program Buffer 执行时有定义。
DRET 由 Debug Module 用于恢复正常执行。它的推荐编码为 0x7b200073;执行时 PC 从 dpc 恢复,正常执行按 dcsr 中的 prv 和 v 恢复,适用时 ELP 从 pelp 恢复。DRET 仅在 D-mode 且不从 Program Buffer 执行时有定义;页面不把未定义上下文伪装成 xRET、非法指令或固定平台行为。
DRET 是调试规范定义的系统级指令,页面说明只覆盖官方规定的架构语义,不推断平台固件策略。
结合 «dret» 等实际代码理解该场景。
结合 «dret» 等实际代码理解该场景。
不是。DRET 只在 D-mode 且不从 Program Buffer 执行时有定义;它不是用户态汇编指令。
PC 从 dpc 恢复;正常执行按 dcsr.prv 与 dcsr.v 恢复,适用时 ELP 从 pelp 恢复。官方文本没有把它定义为 mret/sret 的中断使能恢复序列。