问题描述
- 《深入理解计算机系统》第二版中的关于条件转移的疑问
-
《深入理解计算机系统》第二版3.6.6条件转移指令:
这一部分讲的大概意思是不是这样:
if (statement1) {
statement2;
} else {
statement3;
}
如果statement1容易计算,那么使用数据的条件转移,将statement2,statement3计算出来,在判断statement1,通过statement1的结果决定执行statement2还是statement3;
如果statement1不容易计算,那么使用控制的条件转移,cpu做出分支预测,预测statement1的结果(现假设预测结果是进入if),那么执行statement2,执行过程中发现错误,再返回执行statement3;望大神解析~
解决方案
问题中的理解貌似不对,其过程如下:
if (statement1) {
statement2;
} else {
statement3;
}
如果statement2、statement3都容易计算,那么会执行数据的条件转移,计算statement2及statement3,然后判断statement1;
否则执行控制的条件转移,cpu做出分支预测,预测statement1的结果(现假设预测结果是进入if),那么执行statement2,执行过程中发现错误,再返回执行statement3;
时间: 2025-01-01 11:35:36