如何将拇指条件指令放入IT块

时间:2015-12-09 08:56:12

标签: assembly arm thumb

我正在将一些继承的代码移植到我当前的平台。当我编译它时,它会报告有关arm汇编程序代码的一些错误。

消息显示:

| {standard input}:7236: Error: thumb conditional instruction should be in IT block -- `movne r0,r2'
| {standard input}:7237: Error: thumb conditional instruction should be in IT block -- `biceq r0,r0,#0xff'
| {standard input}:7238: Error: thumb conditional instruction should be in IT block -- `biceq r0,r0,#0xf00'

我是手臂汇编程序的新手,所以我的问题是如何将下面的代码编入IT块。正如编译器所要求的那样。

"movne   r0, r2;\n"
"biceq  r0, r0, #0xff;\n"
"biceq  r0, r0, #0xf00;"

由于

1 个答案:

答案 0 :(得分:3)

" IT区块"指的是由单个IT ("If-Then") instruction条件限制的最多4条指令。虽然你有两个不同的条件,但它们是逻辑上的对立面,所以仍然可以由一个IT覆盖,这要归功于额外的" Else"编码。如果一个ne条件后跟两个eq条件,则执行它们的相应指令将是(我为如果,那么T为然后作为movne,E else 作为biceq,另一个E作为 else 作为另一个biceq):

ITEE   ne
movne  r0, r2
biceq  r0, r0, #0xff
biceq  r0, r0, #0xf00