优化器(一般来说这里)是否需要我的c / c ++代码并编写更好的c / c ++代码,或者将它们直接转换为汇编然后对其进行优化。或者它是一个组合?
修改 我正在使用gcc(但我想知道其他人也做了什么)
答案 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等等)
仅在最后生成汇编代码。