使用寄存器的SWI Thumb ASM命令

时间:2016-01-25 02:33:56

标签: assembly interrupt thumb

我试图使用swi在THUMB处理器上调用软件中断但是我遇到了一个问题,我想使用存储在寄存器中的值作为x部分这个命令swi x。首先,这可能吗?其次,这是我尝试过的:

 swi r0

我尝试过其他变种无济于事,但由于缺乏经验,我没有太多运气

1 个答案:

答案 0 :(得分:0)

如果你看一下swi的编码,它只有一个版本,而不是一个基于寄存器的版本。

如果要使用寄存器,则在swi之前设置寄存器。那么你如何获得注册取决于你所处的架构。如果是皮质m,则只有一组寄存器。如果在全尺寸的手臂上,则可能会根据您呼叫时的模式切换模式。必须使用状态寄存器来确定你来自哪个模式以确定要从哪个寄存器库中取出。使用立即也很难弄清楚你必须拆解以找出arm vs thumb vs thumb2版本的指令。或强制该呼叫来自一种模式。