piaotiejun 2014-09-24 10:44 采纳率: 0%
浏览 2204

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

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

望大神解析~

  • 写回答

1条回答 默认 最新

  • piaotiejun 2014-09-25 04:25
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类