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改为多路分配器的对应偏移值内容。

相关推荐
云qq8 分钟前
x86操作系统19——键盘驱动
linux·c语言·汇编
Studying 开龙wu14 分钟前
Windos 10系统安装OpenPose的CPU版本过程说明和Release版本直接使用
c++·windows
温柔の敲代码32 分钟前
从微观到宏观了解C++项目的编译
开发语言·c++
另寻沧海35 分钟前
C++ Lambda表达式的隐式转换陷阱
java·c++·算法
好评12438 分钟前
C++ 字符串:始于 char*,终于深拷贝
开发语言·c++·stl·字符串
小尧嵌入式1 小时前
QT软件开发知识点流程及记事本开发
服务器·开发语言·数据库·c++·qt
冷崖1 小时前
单例模式-创建型
c++·单例模式
明洞日记1 小时前
【VTK手册024】高效等值面提取:vtkFlyingEdges3D 详解与实战
c++·图像处理·vtk·图形渲染
遥望九龙湖2 小时前
3.析构函数
开发语言·c++
qq_479875432 小时前
systemd-resolved.service实验实战3
linux·服务器·c++