如何通过控制流图优化程序分析流程?

2026-05-06 04:270阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计7563个文字,预计阅读时间需要31分钟。

如何通过控制流图优化程序分析流程?

本章是系列文章的第二篇,介绍了基于控制流图的一些优化方法。包括DAG重排、值记录、相同子表达式等。本章后面介绍了LLVM的一些基本概念,并引导读者编写了一个简单的pass。

本章是系列文章的第二章,介绍了基于控制流图的一些优化方法。包括DAG、值标记、相同子表达式等方法。这章的后面介绍了llvm的一些基本概念,并引导大家写了个简单的pass。

本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技


2控制流图 2.1基本概念 2.1.1中间程序表达

优化编译器和人类检视代码的角度是不一样的。

人类更关注源代码,但源代码和机器码相差太大,另外,从工程师的角度,最好能有一种通用的方法来表示不同编程语言,并且面向不同的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的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技


2控制流图 2.1基本概念 2.1.1中间程序表达

优化编译器和人类检视代码的角度是不一样的。

人类更关注源代码,但源代码和机器码相差太大,另外,从工程师的角度,最好能有一种通用的方法来表示不同编程语言,并且面向不同的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之间的流动方向作为有向边的有向图。

阅读全文