我尝试使用Ubuntu GNU / Linux上的6.2.0-5ubuntu12软件包中的arm-linux-gnueabihf-gcc
,通过GCC 6.2将C程序编译为ARM Thumb-2指令集。
问题是我得到了与我没有使用" -mthumb"时相同的二进制文件。选项:
$ arm-linux-gnueabihf-gcc -c hello.c
$ arm-linux-gnueabihf-objdump -S hello.o
hello.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <main>:
0: b580 push {r7, lr}
2: af00 add r7, sp, #0
4: f240 0000 movw r0, #0
8: f2c0 0000 movt r0, #0
c: f7ff fffe bl 0 <puts>
10: 2300 movs r3, #0
12: 4618 mov r0, r3
14: bd80 pop {r7, pc}
和
$ arm-linux-gnueabihf-gcc -mthumb -c hello.c
$ arm-linux-gnueabihf-objdump -S hello.o
hello.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <main>:
0: b580 push {r7, lr}
2: af00 add r7, sp, #0
4: f240 0000 movw r0, #0
8: f2c0 0000 movt r0, #0
c: f7ff fffe bl 0 <puts>
10: 2300 movs r3, #0
12: 4618 mov r0, r3
14: bd80 pop {r7, pc}
我得到相同的代码。我也试过更复杂的代码(计算Pi的小数),并且仍然得到相同的代码。
我与gcc-4.7-arm-linux-gnueabihf的行为相同,所以问题可能就在于我使用编译器......
我很难相信我是唯一一个面临这个问题的人。必须有办法让海湾合作委员会做他们应该做的事情。