经常检查返回类型是否有错误。但是,可以用不同的方式指定将继续执行的代码。
if(!ret)
{
doNoErrorCode();
}
exit(1);
或
if(ret)
{
exit(1);
}
doNoErrorCode();
单向重量级CPU可以使用简单的统计推测近邻/分支中的分支-我研究了一种用于分支推测的4位机制(-2,-1,0,+ 1,+ 2),其中零是未知的,2将被认为是真正的分支。
考虑到上面的简单技术,我的问题是如何构造代码。我认为在主要编译器和主要架构之间必须有一个约定。这是我的两个问题
当代码不是一个经常访问的循环时,在填充管道时哪个布尔值有偏差?
关于分支的推测必须从true、false或zero开始(管道必须填充某些内容)。可能是哪个?
最佳答案
CPU之间的行为各不相同,编译器经常重新排序指令。
您可以在这些手册中找到所需的所有信息:http://agner.org/optimize/。
在我看来,知道发生了什么的唯一方法是读取编译器生成的汇编代码。
关于c - 保留执行管道,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1833253/