我想应用一种水印算法,它基本上重新排序了编程语言的等价术语:
说,T1, T2,...,Tn
是该语言的等效术语,然后水印是f
的排列f(Ti) = Tj
。
在这种情况下,编程语言是LLVM IR,它是一种中间语言。
本书给出了通过应用置换重新编号寄存器的示例。但是,寄存器不在LLVM IR的范围内,因为它们是较低级别的细节?
我一直在考虑LLVM的等效术语,但无法想出一些。越多越好,因为这意味着更灵活的水印程度。
您能想到LLVM IR的等效术语,以便每个术语可以代替其他一些吗?或者只能在机器代码级别进行这样的水印?
答案 0 :(得分:0)
即使您在IR级别执行此操作(并且您可以通过更改模式),您也不会走远,因为机器指令级别将重新洗牌。你最好写一个(可能是后RA)机器指令级别传递。