基于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[执行语句]

浙公网安备 33010602011771号