LLVM标识符命名

LLVM标识符
1.从作用域上分为:全局标识(global)和局部标识(local)
    全局Pattern:[@][-a-zA-Z.][−a−zA−Z._][-a-zA-Z.][azAZ._0-9]*
    局部Pattern:[%][-a-zA-Z.][−a−zA−Z._][-a-zA-Z.][azAZ._0-9]*
    (正则表达式表示,就不举例子了)
    Note:转移,以及组合时的自引用还没看懂.
2.未命名变量
[%@][0-9]+
3.常量
在常量篇里面具体介绍.
4.要求使用前缀的用处
 1.现今已经存在的和未来即将扩展的 “关键字” 不会和"标识符"冲突.
 2.自动变量%0 @1,可以使编译器快速生成临时变量,而且不会和"Symbol Tablet"(学过编译原理的都知道符号表吧)冲突.
 3.LLVM中的保留词与其他语言中的保留词非常相似。对于不同的操作码(‘add’、‘bitcast’、‘ret’等),对于原子类型名(‘void’、‘i32’等),还有其他关键字。这些保留词不能与变量名冲突,因为它们都没有以前缀字符(“%”或‘@’)开头。
 下面时一个例子:

%result = mul i32 %X, 8 ;%X*8的值 保存到%result 
;这是注释,一行结束

%result = shl i32 %X, 3

%0 = add i32 %X, %X           ; yields i32:%0
%1 = add i32 %0, %0           ; yields i32:%1
%result = add i32 %1, %1
;上面三种方式等价,只不过第三个使用"临时变量"

1.注释用“;”分隔,直到行结束。
2.当计算结果未分配给命名值时,创建未命名临时变量。
3.未命名的临时变量按顺序编号(使用每个函数递增计数器,从0开始)。
4.请注意,在这个编号中包含基本块和未命名的函数参数。例如,如果条目基本块没有给出一个标签名,所有的函数参数都被命名,那么它将得到0号。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值