亲宝软件园·资讯

展开

汇编语言 跳转指令 汇编语言 跳转指令与C语言的条件分支

无欲则刚 人气:0

跳转指令

跳转指令也是一个组的指令,称为j组。其中jmp为无条件跳转,其余为条件跳转

上图为j组指令,可结合条件码访问指令加深理解

在机器指令水平上理解如何对跳转指令编码

使用汇编语言的跳转指令实现C语言的条件分支

如上图,左边的程序可以通过上边的指令翻译成汇编指令

对上边指令的理解:

使用条件数据传输指令实现条件分支

结合实例

指令就是跳转指令去掉-fno-if-conversion

条件数据传输指令过程:

把一种情况的结果(x-y)先计算出来,放到rax寄存器;另一种同样计算出来,放到rdx寄存器;然后比较x与y大小

比较大小时用到cmov指令组,与set指令组类似。如cmovle是在小于等于的情况下,将rdx赋值给rax;大于则保持原状。

条件数据传输指令可对性能进行很好的优化,但不是所有条件数据分支都可用条件语句表达,如下图

分支语句块中包含非常重的计算,导致计算开销远大于对流水线性能的优化

具有一些临界风险情况。如取p指针指向地址的值的操作,必须在p不为0前提下进行。而条件数据传输指令会先将两个结果计算出来,再做取舍。此时若p指针不存在,会报错

计算中可能出现副作用,即使用变量互相间有关联。两种结果均会对x进行更新,若使用条件数据传输指令先计算结果的话,会使x值变化,与原逻辑不符

加载全部内容

相关教程
猜你喜欢
用户评论