File tree Expand file tree Collapse file tree 8 files changed +15
-9
lines changed Expand file tree Collapse file tree 8 files changed +15
-9
lines changed File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change 11# 控制语句
22
3- 我在之前汇编语言的教程中,是将跳转与函数放在一起讲的,因为在汇编语言中这两个概念几乎没有太大的区别。然而,到了LLVM IR中,这两者就有了比较大的区别。因此,在这篇文章中,我主要讲的是LLVM IR中控制语句的构造方法。
4-
53## 汇编层面的控制语句
64
75在大多数语言中,常见的控制语句主要有四种:
@@ -282,7 +280,7 @@ dot .main.dot -Tpng -o for.png
282280
283281生成其可视化的控制流图(CFG):
284282
285- ![ for] ( assets/05_for.png )
283+ ![ for] ( ../ assets/05_for.png)
286284
287285### ` switch `
288286
File renamed without changes.
Original file line number Diff line number Diff line change 1+ # 控制流
2+
3+ 我在之前汇编语言的教程中,是将跳转与函数放在同一篇文章里的,因为在汇编语言中这两个概念几乎没有太大的区别。然而,到了LLVM IR中,这两者就有了比较大的区别。因此,我将其分成了多篇文章单独介绍。
4+
5+ 在程序分析领域,往往会强调一对概念:数据流与控制流。所谓数据流,就是指一个程序中的数据,从硬盘到内存,从内存到寄存器,等等一系列的数据搬运、处理的过程。这一过程,在之前的文章中已经详细地介绍了。
6+
7+ 而控制流,则是指程序执行指令的顺序。最简单地,我们的程序在除了顺序执行指令,还可以通过` if ` 语句进行条件跳转,通过` for ` 、` while ` 语句进行循环,还可以通过函数调用进入到别的函数。凡此种种,都是程序控制流的变化。
Original file line number Diff line number Diff line change 44
55- [ LLVM架构简介] ( 01-LLVM架构简介.md )
66- [ Hello world] ( 02-Hello%20world.md )
7- - [ 数据表示] ( 03-数据表示.md )
8- - [ 数据区与符号表] ( 03-01-数据区与符号表.md )
9- - [ 寄存器和栈] ( 03-02-寄存器和栈.md )
10- - [ 数据的使用] ( 03-03-数据的使用.md )
7+ - [ 数据表示] ( 03-数据表示/README .md )
8+ - [ 数据区与符号表] ( 03-数据表示/ 01-数据区与符号表.md )
9+ - [ 寄存器和栈] ( 03-数据表示/ 02-寄存器和栈.md )
10+ - [ 数据的使用] ( 03-数据表示/ 03-数据的使用.md )
1111- [ 类型系统] ( 04-类型系统.md )
12- - [ 控制语句] ( 05-控制语句.md )
13- - [ 函数] ( 06-函数.md )
12+ - [ 控制流] ( 05-控制流/README.md )
13+ - [ 控制语句] ( 05-控制流/01-控制语句.md )
14+ - [ 函数] ( 05-控制流/02-函数.md )
1415- [ 异常处理] ( 07-异常处理.md )
You can’t perform that action at this time.
0 commit comments