arm指令宽度说明符无法编译

时间:2016-11-29 07:54:03

标签: assembly arm disassembly thumb

我试图反汇编并修改arm的一些代码。反汇编显示了一些带指令宽度说明符的指令,例如:

 80002be:   f44f 5360   mov.w   r3, #14336  ; 0x3800
 80002c2:   f2c4 0302   movt    r3, #16386  ; 0x4002
 80002c6:   f44f 5260   mov.w   r2, #14336  ; 0x3800
 80002ca:   f2c4 0202   movt    r2, #16386  ; 0x4002

但是当我试图修改代码和汇编时,汇编程序不喜欢mov.w:

main.asm:5: Error: unexpected character `w' in type specifier
main.asm:5: Error: bad instruction `mov.w r3,#14336'

我尝试指定-mcpu = cortex-m4 -march = armv7-m -mthumb,但它没有帮助。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

指令宽度说明符是UAL语法的一部分。您似乎正在使用GNU汇编程序,它默认为(相当宽松的解释)传统的单独ARM / Thumb语法,具体取决于-marm / -mthumb或等效指令。如果要正确使用UAL功能,则需要先使用.syntax unified指令进行设置。