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

相关推荐

  1. C语言if语句底层原理汇编深入理解

    2024-02-13 13:42:02       33 阅读
  2. 深入理解c语言printf

    2024-02-13 13:42:02       36 阅读
  3. 深入理解vue相关的底层原理

    2024-02-13 13:42:02       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-13 13:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-13 13:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-13 13:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-13 13:42:02       18 阅读

热门阅读

  1. VUE SEO 几种方案经典面试题

    2024-02-13 13:42:02       29 阅读
  2. 如何控制系统安全 或 控制流氓软件

    2024-02-13 13:42:02       26 阅读
  3. Python开发者转型Go开发

    2024-02-13 13:42:02       24 阅读
  4. SpringBoot中全局异常处理

    2024-02-13 13:42:02       28 阅读