我不明白为什么@a
是i32*
的类型。请问有人解释一下吗?
@a = internal global i32 0
define i32 @main() {
store i32 42, i32* @a
%1 = load i32* @a
ret i32 %1
}
答案 0 :(得分:2)
来自the language reference(强调我的):
全局变量定义在编译时分配的内存区域而不是运行时 [...]
作为SSA值,全局变量定义指针值,这些指针值在程序范围内(即它们占主导地位)程序中的所有基本块。 全局变量总是定义指向其“内容”类型的指针,因为它们描述了一个内存区域,LLVM中的所有内存对象都是通过指针访问的。