我想应用一个假定寄存器为R0, R1,...,Rn
的算法。
在这种情况下,我想控制的是这些寄存器的分配顺序。
是否可以在LLVM IR级别控制寄存器,或IR是否可以屏蔽这些低级别的细节?
答案 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"}