我正在将一些继承的代码移植到我当前的平台。当我编译它时,它会报告有关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;"
由于
答案 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