首页 > 解决方案 > LLVM 中的上下文概念

问题描述

我是 LLVM 环境的新手。我正在尝试理解上下文的概念。“代码的上下文”是什么意思?为什么框架需要它?从网络上的各种信息来看,它似乎是给定代码的状态信息。仍然无法想象它的作用?为什么它很重要?

标签: llvmllvm-ir

解决方案


上下文的存在是为了允许单个程序使用两个库(例如,一个图形库和一个 3d 音频库),这两个库都在底层使用 LLVM,以使它们的 LLVM 不会相互干扰。规则是你永远不能在两个上下文之间移动 LLVM 对象。使用一个上下文创建的所有模块、类型和常量将永远保留在该上下文中。(验证者将检查模块中的所有 IR 是否属于同一上下文,以防万一。)

当您想让两个线程同时使用 LLVM 做事时,这种不干扰对于线程安全也很有用。以后不能组合上下文,但可以生成汇编代码文本并将其连接起来。

为方便起见,还有一个全局对象,但只有 main() 程序应该使用它,以免我们有两个 LLVM 实例再次干扰。


推荐阅读