arm-linux-gcc -mthumb似乎生成了常规的arm代码

时间:2017-01-20 14:51:42

标签: c linux gcc arm thumb

我尝试使用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的行为相同,所以问题可能就在于我使用编译器......

我很难相信我是唯一一个面临这个问题的人。必须有办法让海湾合作委员会做他们应该做的事情。

0 个答案:

没有答案