gpt4 book ai didi

c - 是否可以使用 GCC 获得经过优化的中间 C 文件?

转载 作者:太空狗 更新时间:2023-10-29 16:12:03 31 4
gpt4 key购买 nike

我有一些带循环的 C 代码:

for(int i=0; i<1000; i+=ceil(sqrt(i)))
{
do stuff that could benefit from loop unrolling;
}

我打算使用宏命令告诉 GCC 展开循环,但我想确保在这种情况下它确实会展开循环(因为增量不是 1,但它仍然可以被预处理和展开)。

有没有可能让GCC在优化后输出包含代码的.C文件? (希望包括它在汇编级优化之前对 -O 所做的任何优化)?

我知道我可以使用汇编输出来确认这一点,但我更愿意看到 C 语言的内容 - 对我来说更容易阅读和理解。

最佳答案

C 是一种高级编译语言。因此,它不是优化机器代码的适当表示。虽然,你可能觉得看到 C 代码会更容易理解,但它缺乏汇编的绝对精度,它直接映射到机器代码。对于这个简单的例子,您可能很清楚优化在高级语言中意味着什么,但对于优化来说通常情况并非如此。查看汇编语言可以准确地显示编译器做了什么。

其次,编译器对某种 intermediate representation (IR) 进行优化,它比高级代码(在本例中为 C)更类似于机器代码。要在执行优化后输出高级代码,需要反编译步骤。 GCC 不适合为像这样很少使用的功能添加反编译逻辑。但是,如果您真的想要查看 C 中的优化代码,您可以通过反编译器运行 GCC 生成的程序集以获取高级代码。

简短回答:GCC 不会执行您想要的操作,但您可以使用反编译器从汇编中生成 C 代码。

Here is a stack overflow thread about choosing a good C decompiler for linux.

关于c - 是否可以使用 GCC 获得经过优化的中间 C 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27658538/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com