C语言if语句底层原理,从汇编深入理解

i条件判断语句是程序中必不可少的语句,没有它程序就只会按照原先设定的顺序执行,而不会灵活变通,在cpu底层可没有"如果"这个概念,只有数值的体现。while循环也就比if语句多了个跳转到开头的地址重新判断的代码,本质也有判断。

if语句原理:cmp指令先用两个数相减,改变标志寄存器,如sf符号位,cf进位位,ov溢出位,zf零标志位,然后下面条件转移指令,cpu微电路中的程序计数器(ip)连接着多路分配器,把条件转移指令逻辑判断后的状态是0或1作为偏移值,如if(value!=0) a++;翻译成汇编是cmp dword ptr[value],0

je 0x00567894h,取相反的情况等于0才跳转到if执行的代码外的地址。je是将各bit上的数字作或运算,寄存器中只要有一位是1那么结果就是1,全是0结果才为0。0值处保存的是下一句指令的地址,1值保存着条件指令对应要跳转的代码地址。最后将ip改为多路分配器的对应偏移值内容。

相关推荐
ahadee42 分钟前
蓝桥杯每日真题 - 第7天
c++·vscode·算法·蓝桥杯
Jack黄从零学c++2 小时前
opencv(c++)----图像的读取以及显示
c++·人工智能·opencv
小志biubiu2 小时前
哈希表的实现--C++
开发语言·数据结构·c++·学习·算法·哈希算法·散列表
forth touch2 小时前
c++ shared_ptr 常见构造函数
开发语言·c++
DdddJMs__1353 小时前
C语言 | Leetcode C语言题解之第552题学生出勤记录II
c语言·leetcode·题解
DdddJMs__1353 小时前
C语言 | Leetcode C语言题解之第554题砖墙
c语言·leetcode·题解
Frank学习路上3 小时前
【C++】OGRE:面向对象图形渲染库配置与示例
c++·图形渲染·ogre
doll ~CJ4 小时前
定时器(QTimer)与随机数生成器(QRandomGenerator)的应用实践——Qt(C++)
c++·qt·计时器与随机数生成器运用·图片循环播放
爱跑步的一个人5 小时前
STL-常用排序算法
开发语言·c++·排序算法