嗨 我感兴趣的是什么是汇编代码的gcc从这个代码生成(这只是虚拟的代码来说明我的观点):GCC寄存器优化
int a = 0;
int foo(void)
{
int result = a;
a += 2;
return result;
}
我惊讶于该GCC拷贝的变量来堆栈然后从堆栈到寄存器,以便它可以返回它。当我在寄存器中添加结果声明时,它优化了代码而不是使用堆栈,而是直接将变量复制到寄存器中。我知道这并没有什么区别,但我想知道gcc是否没有任何好理由暗中做出这样的优化。我希望我明确表示我在说什么...
任何想法?
您应该提供编译器版本,命令行和汇编输出。 – 2011-04-09 14:38:47
帕斯卡尔的评论+1。在谈论诸如编译器优化之类的细节时,尽可能给这里的人们尽可能多的上下文。 (也就是说,这听起来像你没有使用最积极的优化。) – 2011-04-09 14:41:08
这里最重要的部分可能是你编译这个代码是否启用优化 – nos 2011-04-09 14:45:48