码迷,mamicode.com
首页 > 其他好文 > 详细

基于gcc编译的for(C)解释

时间:2020-11-27 11:45:18      阅读:9      评论:0      收藏:0      [点我收藏+]

标签:class   $1   c语言   源码   语言   基于   rap   寄存器   The   

for语句的构成

  • 初始语句
  • 条件跳转语句
  • 变条语句
  • 执行语句
    c源码
    for(i=0;i<5;i++){
        int a =2; 
    } 

汇编

1    movl    $0, -8(%rbp)
2    jmp .L4 
3.L5:
4    movl    $2, -4(%rbp)
5    addl    $1, -8(%rbp)
6.L4:
7    cmpl    $4, -8(%rbp)
8    jle .L5 
语句 c语言 gcc汇编语言
初始语句 i=0 movl $0, -8(%rbp)
条件跳转语句 i<5 cmpl $4, -8(%rbp); jle .L5
变条语句 i++ addl $1, -8(%rbp)
执行语句 a =2 movl $2, -4(%rbp)

汇编语言解释:

  • mov 赋值;
  • cmp 比较;
  • add 加法;
  • -n(%rbp) n:偏移量 rbp:栈寄存器;
  • $n :字面量(常量)
  • jle 与cmp 配合使用 :小于或等于;
  • jmp 类似与goto语句
graph TB a[初始语句]-->b[条件跳转语句] c-->d[变条语句] d-->b b--yes-->c[执行语句]

基于gcc编译的for(C)解释

标签:class   $1   c语言   源码   语言   基于   rap   寄存器   The   

原文地址:https://www.cnblogs.com/haoge2000/p/14030962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!