我想应用一种水印算法,基本上对编程语言的等价术语进行重新排序:
比方说,T1, T2,...,Tn是语言的等价术语,那么水印就是一个置换f,比如f(Ti) = Tj。
在本例中,编程语言是LLVM IR,它是一种中间语言。
这本书给出了一个通过应用排列对寄存器进行重新编号的例子。然而,寄存器不在LLVM IR的范围内,因为它们是较低级别的详细信息?
我一直在考虑LLVM的等效术语,但没有想出一些。越多越好,因为这意味着水印的程度更灵活。
您能想出LLVM IR的等价术语,以便每个术语都可以替换其他术语吗?或者,这样的水印只能在机器代码级别进行吗?
发布于 2017-02-20 12:41:25
即使您在IR级别执行此操作(您可以通过更改模式),您也不会走得太远,因为机器指令级别将重新洗牌所有内容。您最好编写一个(可能是在RA之后)机器指令级pass。
https://stackoverflow.com/questions/42313663
复制相似问题