共计 1052 个字符,预计需要花费 3 分钟才能阅读完成。
全局变量
@.str.9 = private unnamed_addr constant [12 x i8] c”jinjingTest\00″, section “__TEXT,__cstring,cstring_literals”, align 1
@示意全局变量 与之绝对应的 % 示意局部变量, 以 % 前缀
private 示意公有的
unnamed_addr 示意地址不重要, 只有内容. 被标记成这样的常量如果领有雷同的初始化器, 能够合并. 比如说下面的 “jinjingTest” 能够和其余的内容为 ”jinjingTest” 的常量合并.local_unnamed_addr 示意地址在模块中被认为是不重要的
constant 示意常量
[12 x i8] 示意 12 个 1 字节 (i8 为 8 位) 的数组, 也可示意字符串, 这里包含分隔符 \00
c”jinjingTest\00″ 为 llvm 里的初始化器, 示意 c 字符串,\00 为结尾符
section 示意存储在 Mach- o 中的 section 中央
align 1 示意内存对齐为 1,就是其中有余 1 的依照 1 对齐
语法如下:
@<GlobalVarName> = [Linkage] [PreemptionSpecifier] [Visibility]
[DLLStorageClass] [ThreadLocal]
[(unnamed_addr|local_unnamed_addr)] [AddrSpace]
[ExternallyInitialized]
<global | constant> <Type>[<InitializerConstant>]
[, section "name"] [, comdat [($name)]]
[, align <Alignment>] (, !name !N)*
Linkage 链接类型
PreemptionSpecifier 运行抢占阐明
Visibility 可见性规定
DLLStorageClass DLL 存储类别
ThreadLocal 线程存储模型
[(unnamed_addr|local_unnamed_addr)] 地址不重要或模块中地址不重要
[AddrSpace] 地址空间?
[ExternallyInitialized] 内部曾经初始化?
<global | constant> 全局或常量
Type 类型
InitializerConstant 初始化器,即初始化值
,section “name” 寄存的 section 段, 后面有 ”,” 和后面宰割
,align <Alignment> 对齐类型, 后面有 ”,” 和后面宰割
getelementptr 语法
getelementptr