1

我正在研究具有 ARM1176JZF-S 处理器的树莓派 B+ 上的信任区扩展。

用于在世界之间切换的 smc(安全监视器调用)指令的形式为:

"SMC #imm4" eg : smc #0

我正在尝试从 smc 异常处理程序中检索此值。我最初的假设是这可能存储在 R0 寄存器中。但我得到的价值与我通过的不同。那么这个值存储在哪里?

4

1 回答 1

2

该值是指令操作码的一部分。您需要在返回地址读取内存,解析操作码并提取立即值。

因为与读取存储寄存器相比,这种操作可能有些昂贵,所以一种常见的方法是使用处理器寄存器来指定要执行的操作。事实上,ARM 开发了“SMC 调用约定”,建议使用 R0 作为“SMC 函数标识符”,使用 R1-R6 作为参数。

于 2014-11-24T18:14:23.977 回答