Я хочу, чтобы применить алгоритм для водяных знаков, которые в основном переупорядочивает эквивалентные термины языка программирования:Эквивалентные условия LLVM IR для водяных знаков путем перенумерации?
Say, T1, T2,...,Tn
являются эквивалентными терминами языка, то водяной знак является перестановкой f
таким образом, что f(Ti) = Tj
.
В этом случае языком программирования является LLVM IR, который является промежуточным языком.
В книге приведен пример перенумерации регистров путем применения перестановки. Однако регистры не входят в сферу LLVM IR, поскольку они представляют собой детали более низкого уровня?
Я думал об эквивалентных условиях LLVM, но не могу придумать некоторые из них. Чем больше, тем лучше, поскольку это означает более гибкую степень водяного знака.
Можете ли вы представить себе эквивалентные условия LLVM IR, чтобы каждый мог быть заменен другим? Или это возможно только для водяного знака на уровне машинного кода?
Спасибо Joky. Что такое «пост-РА»? Как я могу написать пропуск машинной инструкции? Возможно ли это с использованием структуры LLVM? Не могли бы вы указать мне, как это сделать? – Shuzheng
после RA означает после распределения регистров. Вот документ: http://llvm.org/docs/WritingAnLLVMPass.html#the-machinefunctionpass-class; и я советую вам искать в базе LLVM для MachineFunctionPass, чтобы увидеть несколько примеров этого. – Joky