Assembly 无法编译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

我正在尝试为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,但没有用。有什么想法吗?

指令宽度说明符是语法的一部分。看起来您使用的是GNU汇编程序,它默认使用传统的独立ARM/Thumb语法(相当轻松的解释),具体取决于
-marm
/
-mthumb
或等效指令。如果要正确使用UAL功能,首先需要使用指令设置。

使用gcc?我只知道一点关于ARM的知识,但也许这只是在“统一”语法模式下(与单独的thumb-only语法相比)才起作用的东西