3

I'm porting some inherited codes to my current platform. When I compiling it, it reports some error about arm assembler codes.

The message shows:

| {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'

I'm a totally newbie to arm assembler, so my question is how to make below codes into IT block. Just as required by the compiler.

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

Thanks

Alan
  • 469
  • 10
  • 26

1 Answers1

4

An "IT block" refers to up to 4 instructions made conditional by a single IT ("If-Then") instruction. Whilst you have two different conditions there, they are logical opposites so can still be covered by a single IT thanks to the additional "Else" encoding. With one ne conditional followed by two eq conditionals, the appropriate instruction to proceed them with would be (I for if, then T for then as movne, E for else as biceq and another E for else as another biceq):

ITEE   ne
movne  r0, r2
biceq  r0, r0, #0xff
biceq  r0, r0, #0xf00
Igor Skochinsky
  • 24,629
  • 2
  • 72
  • 109
Notlikethat
  • 20,095
  • 3
  • 40
  • 77