无法编译 arm 指令宽度说明符
arm instruction width specifiers cannot be compiled
我正在尝试解除assemble 并修改 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
但是当我尝试修改代码时 assemble,assembler 不喜欢 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 但它无济于事。有什么想法吗?
指令宽度说明符是 UAL 语法的一部分。看来您正在使用 GNU 汇编器,它默认使用(一种相当宽松的解释)遗留的单独 ARM/Thumb 语法,具体取决于 -marm
/-mthumb
或等效指令。如果您想正确使用 UAL 功能,您需要先使用 .syntax unified
指令进行设置。
我正在尝试解除assemble 并修改 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
但是当我尝试修改代码时 assemble,assembler 不喜欢 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 但它无济于事。有什么想法吗?
指令宽度说明符是 UAL 语法的一部分。看来您正在使用 GNU 汇编器,它默认使用(一种相当宽松的解释)遗留的单独 ARM/Thumb 语法,具体取决于 -marm
/-mthumb
或等效指令。如果您想正确使用 UAL 功能,您需要先使用 .syntax unified
指令进行设置。