pointer”编译选项的含义(3)

优化后的版本:
$ arm-linux-objdump -D no_SFP_arm.o

no_SFP_arm.o:    file format elf32-littlearm
 
Disassembly of section .text:
 
00000000 <a>:
  0:  e24dd010        sub    sp, sp, #16    ; 0x10
  4:  e58d000c        str    r0, [sp, #12]
  8:  e58d1008        str    r1, [sp, #8]
  c:  e59d300c        ldr    r3, [sp, #12]
  10:  e58d3004        str    r3, [sp, #4]
  14:  e59d3008        ldr    r3, [sp, #8]
  18:  e58d3000        str    r3, [sp]
  1c:  e59d3004        ldr    r3, [sp, #4]
  20:  e2833001        add    r3, r3, #1      ; 0x1
  24:  e58d3004        str    r3, [sp, #4]
  28:  e59d3000        ldr    r3, [sp]
  2c:  e2833002        add    r3, r3, #2      ; 0x2
  30:  e58d3000        str    r3, [sp]
  34:  e28dd010        add    sp, sp, #16    ; 0x10
  38:  e1a0f00e        mov    pc, lr
Disassembly of section .data:
 
这里,"fp"充当了"EBP"的角色,ESP在X86里面被leave隐含的恢复好了,所以没有显示设置的必要。
看起来arm平台上"-fomit-frame-pointer"选项的优化作用更加明显。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/16fc2240e253ff5ef46e9c2ae5dfcfb3.html