LLVM - 为什么@a是i32 *的类型

时间:2016-10-16 19:59:01

标签: llvm

我不明白为什么@ai32*的类型。请问有人解释一下吗?

@a = internal global i32 0
define i32 @main() {
  store i32 42, i32* @a
  %1 = load i32* @a
  ret i32 %1
}

1 个答案:

答案 0 :(得分:2)

来自the language reference(强调我的):

  

全局变量定义在编译时分配的内存区域而不是运行时   [...]
  作为SSA值,全局变量定义指针值,这些指针值在程序范围内(即它们占主导地位)程序中的所有基本块。 全局变量总是定义指向其“内容”类型的指针,因为它们描述了一个内存区域,LLVM中的所有内存对象都是通过指针访问的。