我试图反汇编并修改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,但它没有帮助。有什么想法吗?
答案 0 :(得分:3)
指令宽度说明符是UAL语法的一部分。您似乎正在使用GNU汇编程序,它默认为(相当宽松的解释)传统的单独ARM / Thumb语法,具体取决于-marm
/ -mthumb
或等效指令。如果要正确使用UAL功能,则需要先使用.syntax unified
指令进行设置。