2 piaotiejun piaotiejun 于 2014.09.24 18:44 提问

《深入理解计算机系统》第二版中的关于条件转移的疑问

《深入理解计算机系统》第二版3.6.6条件转移指令:
这一部分讲的大概意思是不是这样:
if (statement1) {
statement2;
} else {
statement3;
}
如果statement1容易计算,那么使用数据的条件转移,将statement2,statement3计算出来,在判断statement1,通过statement1的结果决定执行statement2还是statement3;
如果statement1不容易计算,那么使用控制的条件转移,cpu做出分支预测,预测statement1的结果(现假设预测结果是进入if),那么执行statement2,执行过程中发现错误,再返回执行statement3;

望大神解析~

1个回答

piaotiejun
piaotiejun   2014.09.25 12:25

问题中的理解貌似不对,其过程如下:
if (statement1) {
statement2;
} else {
statement3;
}
如果statement2、statement3都容易计算,那么会执行数据的条件转移,计算statement2及statement3,然后判断statement1;
否则执行控制的条件转移,cpu做出分支预测,预测statement1的结果(现假设预测结果是进入if),那么执行statement2,执行过程中发现错误,再返回执行statement3;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!