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

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

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

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

相关推荐
qq_406981032 分钟前
c++的decltype是什么
开发语言·c++
坤坤子吖7 分钟前
算法学习——单调队列
开发语言·c++·笔记·学习·算法
杜 硕39 分钟前
从零开始的C++生活——第六讲——01
开发语言·c++·生活
Risehuxyc3 小时前
C++(VS2026)使用Ncap库的配置
c++
图灵-M3 小时前
【数据结构】静态 & 动态顺序表
c语言·数据结构·笔记
4ever.ov03 小时前
精学C++第一站 从命名空间到引用:C++入门核心语法全梳理(13000字长文)
开发语言·c++·clion
揽星河..3 小时前
【C语言】数组
c语言·开发语言·算法
听风若依4 小时前
C++模板初阶
c++·算法
水饺编程4 小时前
第2章:Linux 基础,制作【.tar.xz】压缩包文件
linux·c语言·汇编
纪念 2294 小时前
C++ 算法(模拟)
开发语言·c++·算法