Assembly 无法编译arm指令宽度说明符
我正在尝试为arm反汇编和修改一些代码。反汇编显示一些带有指令宽度说明符的指令,例如:Assembly 无法编译arm指令宽度说明符,assembly,arm,disassembly,thumb,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 ; 0
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,但没有用。有什么想法吗?指令宽度说明符是语法的一部分。看起来您使用的是GNU汇编程序,它默认使用传统的独立ARM/Thumb语法(相当轻松的解释),具体取决于
-marm
/-mthumb
或等效指令。如果要正确使用UAL功能,首先需要使用指令设置。使用gcc?我只知道一点关于ARM的知识,但也许这只是在“统一”语法模式下(与单独的thumb-only语法相比)才起作用的东西