我正在组装下面的汇编程序:
.syntax unified
.cpu cortex-m4
.thumb
.section .text
orr r1, #12800
orr r1, #12801
Run Code Online (Sandbox Code Playgroud)
基本上,只有两个OR指令.如果我看一下结果objdump,我得到:
bla.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <.text>:
0: f441 5148 orr.w r1, r1, #12800 ; 0x3200
4: f243 2101 movw r1, #12801 ; 0x3201
Run Code Online (Sandbox Code Playgroud)
第二个OR默默地变成MOVW!汇编程序运行如下:arm-none-eabi-gcc -g -Wall -c bla.s它没有显示任何警告.
版本as是GNU assembler version 2.29.51 (arm-none-eabi) using BFD version (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 2.29.51.20171128在OSX上运行的.
知道为什么第二个OR变成了MOV吗?