Assembly 如何将thumb条件指令放入IT块
我正在将一些继承的代码移植到我当前的平台。当我编译它时,它报告了一些关于arm汇编程序代码的错误 信息显示:Assembly 如何将thumb条件指令放入IT块,assembly,arm,thumb,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
| {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'
我对arm汇编完全是个新手,所以我的问题是如何将下面的代码转换成IT
块。正如编译器所要求的那样
"movne r0, r2;\n"
"biceq r0, r0, #0xff;\n"
"biceq r0, r0, #0xf00;"
多亏了一个“IT块”指的是由一个单独的模块生成的最多4条指令。虽然存在两种不同的情况,但它们在逻辑上是对立的,因此由于附加的“Else”编码,仍然可以由单个IT
覆盖。当一个ne
条件后紧跟着两个eq
条件时,执行它们的合适指令是(I表示if,T表示then asmovne
,E表示else asbiceq
,E表示else as另一个biceq
):
ITEE ne
movne r0, r2
biceq r0, r0, #0xff
biceq r0, r0, #0xf00