赞
踩
跳转说明
跳转指令也是一组指令,称为组j. jmp是无条件跳转,其余是条件跳转
上图显示了j组指令,可以将其与条件代码访问指令结合使用以加深理解
了解如何在机器指令级别编码跳转指令
使用汇编语言跳转指令来实现C语言条件分支
如上所示,可以通过上面的指令将左侧的程序翻译为汇编指令
了解上述说明:
使用条件数据传输指令来实现条件分支
组合示例
该指令是删除跳转指令-fno-if-conversion
有条件的数据传输指令过程:
首先计算一种情况(x-y)的结果并将其放入rax寄存器中;另一种计算它并将其放入rdx寄存器中;然后比较x和y的大小
比较大小时使用cmov指令组,类似于设置的指令组. 如果cmovle小于或等于,则将rdx分配给rax;大于保持原样.
条件数据传输指令可以很好地优化性能,但是并非所有条件数据分支都可以用条件语句表示,如下所示
branch语句块包含非常繁重的计算,这导致计算成本比优化管道性能要大得多
存在一些严重的风险情况. 如果必须在p不为0的前提下执行将p指针的值作为地址的操作c语言对应汇编语句,则条件数据传输指令将首先计算两个结果,然后进行选择. 此时,如果p指针不存在c语言对应汇编语句,将报告错误
在计算中可能会有副作用,即所使用的变量相互关联. 这两个结果都将更新x,如果先使用条件数据传输指令来计算结果,则x的值将发生变化,这与原始逻辑不一致
此处介绍了有关汇编语言跳转指令和C语言条件分支的本文. 有关更多相关的汇编语言跳转说明,请搜索Script House的上一篇文章,或继续浏览下面的相关文章. 该文章希望以后每个人都支持Script House!
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-169628-1.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。