CSAPP阅读笔记-第三章:程序的机器级表示
2021-03-17 本文已影响0人
希望是水户洋平
章节开头导语部分
GCC C语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示,给出程序中的每一条指令。
x86-64是现在笔记本电脑和台式机中最常见处理器的机器语言,也是驱动大型数据中心和超级计算机的最常见处理器的机器语言。
3.3.6 用条件传送来实现条件分支
背景
传统的通过使用控制的条件转移的方法(即当条件满足时,程序沿着一条执行路径执行,而当条件不满足时就走另一条路径)虽然实现起来很简单,但是在现代处理器上可能会非常低效。
示例
传统方式实现
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;
}
未完待续。。。。。。