gpt4 book ai didi

c++ - 编译器是否能够优化意大利面条代码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:11 25 4
gpt4 key购买 nike

我正在编写一个在最后生成 C++ 代码的编译器,我不能使用 while\for 或任何其他正常循环,所以我将它转换为 goto\if 和这样的分配\调用行:

if (i<b) goto loop_959__again;
loop_959__end: ;
}
{
int inumber;
int i;
i=0;
inumber=3;
if (!(inumber<30)) goto loop_4482__end;
loop_4482__again:
float fnumber;
_A1__main__increase(__owner);
i++;
inumber++;
fnumber=3;
loop_4482__step_begin:
if (inumber<30) goto loop_4482__again;
loop_4482__end: ;
}

这看起来真的很痛苦,但是 GCC 编译器可以像上面那样编译和优化代码,就像它由普通循环等组成一样吗?

最佳答案

编译器通过流程图分析优化程序控制流,从编译器的角度来看,在该级别使用 goto 而不是 if 分支实际上是等效的。

需要牢记的一个警告:如果生成器生成 irreducible control flow graphs,因为 gotos 几乎可以在函数的任何地方跳转,这肯定会影响编译器的优化能力。

关于c++ - 编译器是否能够优化意大利面条代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26378197/

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