llvm - LLVM IR 是否具有重复变量名的范围?
问题描述
我是 LLVM 新手,LLVM IR 是否有重复变量名的范围?
例如:
@x = global i32 0
define void @hello() {
%x = alloca i32, align 4
}
@x
变量名是否与 重复%x
?
解决方案
如果您尝试编写对这些变量执行某些操作的代码,您会发现答案是否定的。
要访问@x
,您必须使用Module::GetGlobalVariable
方法,这显然不会拿起%x
. 同样,要访问%x
,您必须迭代Function
s BasicBlocks
,寻找一个Instruction
名为“x”。是的,%x
事物不是变量,而是指令。
最后,在文本 IR 级别,这些值也不能以任何方式混合,因为 LLVM 中的全局值带有前缀,@
而本地值 - 带有%
.
推荐阅读
- r - 在 R 中可以进行稳定的 ggplotGrob 定位吗?(两个不同比例的 y 轴)
- javascript - 如何在 Firefox 中通过 fetch js 向 API 发出请求?
- java - 有什么方法可以将滚动窗格添加到 jlist,它添加到具有空布局的面板上?
- regex - nginx - 带有“?”的位置 贪婪/没有按预期工作(在 url 中查询的位置)
- python - 将 Django 命令分组到同一应用程序内的文件夹中
- android-source - 如何提取基于 F2FS 文件系统的磁盘 img 文件?
- amazon-web-services - 我们可以使用 terraform 为 IAM 账户启用 MFA 吗?
- amazon-web-services - 我应该在 AWS 中的 NAT 实例安全组上打开 ICMP 连接吗?
- django - 我的模型没有出现在管理模型数据中在 csrf 中间件令牌的链接栏中变得可见
- iphone - 希望我的 iPhone 应用程序最初是免费的,以后用户需要付费才能继续使用