CSAPP阅读笔记-第三章:程序的机器级表示

2021-03-17  本文已影响0人  希望是水户洋平

章节开头导语部分

GCC C语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示,给出程序中的每一条指令。
x86-64是现在笔记本电脑和台式机中最常见处理器的机器语言,也是驱动大型数据中心和超级计算机的最常见处理器的机器语言。

3.3.6 用条件传送来实现条件分支

背景

传统的通过使用控制的条件转移的方法(即当条件满足时,程序沿着一条执行路径执行,而当条件不满足时就走另一条路径)虽然实现起来很简单,但是在现代处理器上可能会非常低效。

image.png

示例

传统方式实现
long absdiff(long x, long y)
{
    long result;
    if (x < y)
        result = y - x;
    else
        result = x - y;
    return result;
}
使用条件赋值方式实现

long cmovdiff(long x, long y)
{
    long rval = y - x;
    long eval = x - y;
    long ntest = x >= y;
    /*
        Line below requires single instruction:
    */
    if (ntest) rval = eval;
    return rval;
}

未完待续。。。。。。

上一篇 下一篇

猜你喜欢

热点阅读