下次您提出问题时,您应该提供一个最小的、可重复的示例,因为这将使人们更容易帮助您。
我可能误解了你的问题,但我没有得到movw
从以下程序汇编的代码中的任何指令——你可能只是为GBA指定了错误的 cpu ,或者你可能使用了不太可能的默认 cpu arm7tdmi
,因为它于 1994 年推出。
ldr.s
:
.cpu arm7tdmi
.thumb
ldr r1, =0x3ff
.end
/opt/arm/10/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-as -c ldr.s
/opt/arm/10/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-objdump -d a.out
a.out: file format elf32-littlearm
Disassembly of section .text:
00000000 <.text>:
0: 4900 ldr r1, [pc, #0] ; (4 <.text+0x4>)
2: 0000 .short 0x0000
4: 000003ff .word 0x000003ff
例如,将 cpu 设置为cortex-m3
,确实提供了与您所描述的内容一致的输出:
ldr.s
:
.cpu cortex-m3
.thumb
ldr r1, =0x3ff
.end
/opt/arm/10/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-as -c ldr.s
/opt/arm/10/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-objdump -d a.out
a.out: file format elf32-littlearm
Disassembly of section .text:
00000000 <.text>:
0: f240 31ff movw r1, #1023 ; 0x3ff