在 ARM 汇编中,SVC
(Supervisor Call)指令用于从用户模式切换到特权模式(如 Supervisor 模式),以便执行操作系统内核提供的服务。它通常用于系统调用。
具体作用
- 触发异常 :执行
SVC
指令时,处理器会进入 Supervisor 模式,并跳转到异常向量表中的SVC
异常处理程序。 - 传递参数 :
SVC
指令后的立即数可作为参数传递给异常处理程序,帮助识别具体的系统调用。
语法
assembly
SVC #<imm>
<imm>
是一个 24 位的立即数,用于传递参数。
示例
assembly
MOV R0, #4 @ 将参数 4 放入 R0
SVC #0 @ 调用系统调用,立即数 0 表示具体调用
处理流程
- 执行
SVC
指令 :处理器切换到 Supervisor 模式,并跳转到SVC
异常处理程序。 - 读取参数 :处理程序读取
SVC
指令后的立即数,确定具体操作。 - 执行服务:根据参数执行相应的内核服务。
- 返回用户模式:服务完成后,处理器返回用户模式并继续执行后续指令。
总结
SVC
指令用于系统调用,允许用户程序请求操作系统服务。通过立即数传递参数,操作系统根据参数执行相应操作。