如何通过控制流图优化程序分析流程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计7563个文字,预计阅读时间需要31分钟。
本章是系列文章的第二篇,介绍了基于控制流图的一些优化方法。包括DAG重排、值记录、相同子表达式等。本章后面介绍了LLVM的一些基本概念,并引导读者编写了一个简单的pass。
本章是系列文章的第二章,介绍了基于控制流图的一些优化方法。包括DAG、值标记、相同子表达式等方法。这章的后面介绍了llvm的一些基本概念,并引导大家写了个简单的pass。
本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技
优化编译器和人类检视代码的角度是不一样的。
人类更关注源代码,但源代码和机器码相差太大,另外,从工程师的角度,最好能有一种通用的方法来表示不同编程语言,并且面向不同的target硬件架构,这种通用的表达我们通常称为程序的中间表达(Intermediate Representations),简称IR。针对不同层,我们经常会看到不同的IR,高级的有HLIR,低级的有LLIR,还有多级的IR,叫MLIR(Multi-Level Intermediate representation,有时MLIR也会当做中级IR,也就是Middle Level IR的简称)。
2.1.2控制流图CFG控制流图是编译器表示程序的一种方式。
控制流图是BB(Basic Block,基本块)为结点,根据程序在BB之间的流动方向作为有向边的有向图。
本文共计7563个文字,预计阅读时间需要31分钟。
本章是系列文章的第二篇,介绍了基于控制流图的一些优化方法。包括DAG重排、值记录、相同子表达式等。本章后面介绍了LLVM的一些基本概念,并引导读者编写了一个简单的pass。
本章是系列文章的第二章,介绍了基于控制流图的一些优化方法。包括DAG、值标记、相同子表达式等方法。这章的后面介绍了llvm的一些基本概念,并引导大家写了个简单的pass。
本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技
优化编译器和人类检视代码的角度是不一样的。
人类更关注源代码,但源代码和机器码相差太大,另外,从工程师的角度,最好能有一种通用的方法来表示不同编程语言,并且面向不同的target硬件架构,这种通用的表达我们通常称为程序的中间表达(Intermediate Representations),简称IR。针对不同层,我们经常会看到不同的IR,高级的有HLIR,低级的有LLIR,还有多级的IR,叫MLIR(Multi-Level Intermediate representation,有时MLIR也会当做中级IR,也就是Middle Level IR的简称)。
2.1.2控制流图CFG控制流图是编译器表示程序的一种方式。
控制流图是BB(Basic Block,基本块)为结点,根据程序在BB之间的流动方向作为有向边的有向图。

