优化器优化c ++或程序集是什么

时间:2016-04-16 20:30:32

标签: c++ c optimization

优化器(一般来说这里)是否需要我的c / c ++代码并编写更好的c / c ++代码,或者将它们直接转换为汇编然后对其进行优化。或者它是一个组合?

修改 我正在使用gcc(但我想知道其他人也做了什么)

3 个答案:

答案 0 :(得分:3)

优化器可以处于不同的级别,但通常它们不会生成新的可读代码(尽管有时会出现其他语言,例如JavaScript。)

GCC生成中间代表:

http://www.tldp.org/HOWTO/GCC-Frontend-HOWTO-4.html

然后将优化应用于此结构。点击此处查看更多信息,例如:

https://gcc.gnu.org/onlinedocs/gccint/Tree-SSA.html

从那里开始,后端将其转换为最终的机器代码(尽管我相信这部分也涉及优化。)

答案 1 :(得分:2)

  

做优化者......

嗯, optimizers (或更好的优化策略)来自特定的编译器实现。

您的问题没有一般答案

  

并编写更好的c / c ++代码或者将它们直接转换为汇编

不,他们的工作是优化后端代码,后端代码可能是目标程序集或任何中间机器代码。因此,没有预期的中间优化c ++代码。

答案 2 :(得分:2)

优化器不会重写c / c ++代码。

编译器进行词法分析,然后使用代码的某种内部图形表示进行语义分析。优化器首先处理此内部表示以识别和optimize the flow of execution(例如,常量传播)。

一旦代码生成开始,优化器再次进行干预,进行依赖于macine的优化(寄存器分配,特殊指令集,如intel MMX等等)

仅在最后生成汇编代码。