Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 06LLVMDetail.md #275

Merged
merged 1 commit into from
Aug 18, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions 03Compiler/01Tradition/06LLVMDetail.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,11 +162,13 @@ ret i32 %1

在进行编译器优化时,需要了解 LLVM IR(中间表示)的内存模型。LLVM IR 的内存模型是基于基本块的,每个基本块都有自己的内存空间,指令只能在其内存空间内执行。

在 LLVM 架构中,几乎所有的实体都是一个 `Value`。`Value` 是一个非常基础的基类,其子类表示它们的结果可以被其他地方使用。继承自 `User` 的类表示它们会使用一个或多个 `Value` 对象。根据 `Value` 与 `User` 之间的关系,可以引申出 use-def 链和 def-use 链这两个概念。
在 LLVM 架构中,几乎所有的实体都是一个 `Value`。`Value` 是一个非常基础的基类,其子类表示它们的结果可以被其他地方使用。`User` 类是继承自 `Value` 的一个类,表示能够使用一个或多个 `Value` 的对象。根据 `Value` 与 `User` 之间的关系,可以引申出 use-def 链和 def-use 链这两个概念。

- use-def 链是指被某个 `User` 使用的 `Value` 列表;

- def-use 链是指使用某个 `Value` 的 `User` 列表。实际上,LLVM 中还定义了一个 `Use` 类,`Use` 表示上述使用关系中的一个边。
- def-use 链是指使用某个 `Value` 的 `User` 列表。

实际上,LLVM 中还定义了一个 `Use` 类,`Use` 是一个对象,它表示对一个 `Value` 的单个引用或使用。主要作用是帮助 LLVM 跟踪每个 `Value` 的所有使用情况,从而支持 def-use 链的构建和数据流分析。

### LLVM IR 基本单位

Expand Down