通过LLVM IR控制x86寄存器?

时间:2017-02-18 10:02:41

标签: x86 llvm llvm-ir

我想应用一个假定寄存器为R0, R1,...,Rn的算法。

在这种情况下,我想控制的是这些寄存器的分配顺序。

是否可以在LLVM IR级别控制寄存器,或IR是否可以屏蔽这些低级别的细节?

1 个答案:

答案 0 :(得分:0)

您可以在较新版本的llvm上使用llvm.read_register和llvm.write_register。

如果您想要一个好例子,请尝试创建一个全局变量:

register void *rsp asm("rsp");

然后尝试用printf打印它。使用-S -emit-llvm编译简单的C程序,你可以看到使用llvm.read_register

%4 = call i64 @llvm.read_register.i64(metadata !0)

在文件的底部,您将看到元数据索引0为:

!0 = !{!"rsp"}