llvm - LLVM 中的上下文概念
问题描述
我是 LLVM 环境的新手。我正在尝试理解上下文的概念。“代码的上下文”是什么意思?为什么框架需要它?从网络上的各种信息来看,它似乎是给定代码的状态信息。仍然无法想象它的作用?为什么它很重要?
解决方案
上下文的存在是为了允许单个程序使用两个库(例如,一个图形库和一个 3d 音频库),这两个库都在底层使用 LLVM,以使它们的 LLVM 不会相互干扰。规则是你永远不能在两个上下文之间移动 LLVM 对象。使用一个上下文创建的所有模块、类型和常量将永远保留在该上下文中。(验证者将检查模块中的所有 IR 是否属于同一上下文,以防万一。)
当您想让两个线程同时使用 LLVM 做事时,这种不干扰对于线程安全也很有用。以后不能组合上下文,但可以生成汇编代码文本并将其连接起来。
为方便起见,还有一个全局对象,但只有 main() 程序应该使用它,以免我们有两个 LLVM 实例再次干扰。
推荐阅读
- ruby-on-rails - 如何在 Rails 中创建报告按钮?
- sql - SQL:在多列中,创建一个包含非空值的列(使用 reprex)
- sql-server - 尝试备份证书时 SQL Server 崩溃
- javascript - 条纹错误(使用条纹反应支付处理)
- python - 注释字段中一个抽象模型的两个子模型时无限选择
- python - Beginner-Cant import pandas data reader 不断出现错误,谁能告诉我为什么会这样?
- laravel - LARAVEL SAIL 出错 [php_network_getaddresses: getaddrinfo failed]
- django - 疯狂的字段数
- vb.net - 提高文本文件读取速度
- mongodb - 在 API 请求 Mongodb 中减去文档中的值