linux下导出汇编语言文件,linux – 为什么gcc会生成详细的汇编代码?

我对GCC生成的汇编代码有疑问(-S选项).

因为,我是汇编语言的新手并且对它知之甚少,这个问题将是非常原始的.不过,我希望有人会回答:

假设,我有这个C代码:

main(){

int x = 15;

int y = 6;

int z = x - y;

return 0;

}

如果我们查看汇编代码(特别是对应于int z = x – y的部分),我们会看到:

主要:

...

subl $16, %esp

movl $15, -4(%ebp)

movl $6, -8(%ebp)

movl -8(%ebp), %eax

movl -4(%ebp), %edx

movl %edx, %ecx

subl %eax, %ecx

movl %ecx, %eax

movl %eax, -12(%ebp)

...

为什么GCC不能生成类似这样的东西,这样可以减少复制内容.

主要:

...

movl $15, -4(%ebp)

movl $6, -8(%ebp)

movl -8(%ebp), %edx

movl -4(%ebp), %eax

subl %edx, %eax

movl %eax, -12(%ebp)

...

附:

Linux zion-5 2.6.32-21-generic#32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU / Linux

gcc版本4.4.3(Ubuntu 4.4.3-4ubuntu5)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值