Loading

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

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[执行语句]
posted @ 2020-11-24 16:26  流缘飞雨  阅读(216)  评论(0)    收藏  举报