(1)Thumb 软件中断指令
Thumb 软中断指令的行为和ARM 等价指令完全相同,进入异常的指令,使微处理器进入ARM 执行状态。
Thumb 软件中断指令的二进制编码如图4.6 所示。
图4.6 Thumb 软件中断指令的二进制编码
SWI 指令引起SWI 异常。 这意味着:①处理器状态切换到ARM 状态;②处理器模式切换到管理模式;③CPSR 保存到管理模式下的SPSR 中;④执行转移到SWI 向量地址。 处理器忽略immed_8,但immed_8 出现在指令操作码的位[7:0]中,而异常处理程序用它来确定正在请求何种服务。 这条指令不影响条件码标志。
这条指令将引起下列动作:
a.将下一条Thumb 指令的地址保存到r14_svc;
b.将CPSR 寄存器保存到SPSR_svc;
c.微处理器关闭IRQ,清Thumb 位,并通过修改CPSR 的相关位进入监控模式;
d.强制将PC 值被置为地址0x08,然后进入ARM 指令SWI 的处理程序。 正常地返回指令将恢复Thumb 执行状态。
指令格式如下:(www.xing528.com)
SWI <8 位立即数>
其中:<8 位立即数>为数字表达式,其取值为0 ~255 范围内的整数。
(2)Thumb 断点指令
Thumb 断点指令的行为与等价的ARM 指令完全相同。 断点指令用于软件调试,可以使微处理器中断正常指令执行,进入相应的调试程序。
Thumb 断点指令二进制编码如图4.7 所示。
图4.7 Thumb 断点指令二进制编码
当硬件调试单元作适当配置时,断点指令会使微处理器放弃指令预取。 BKPT 指令引起处理器进入调试模式,调试工具利用BKPT 指令来调查到达特定地址时的系统状态。 处理器忽略immed_8,但immed_8 出现在指令操作码的位[7:0]中。 调试器用它来保存断点的信息。
指令格式如下:
注意:等价的ARM 指令与Thumb 指令有完全相同的汇编语法。 只有实现了v5T 结构的ARM 处理器才支持BKPT 指令。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。