Чистый способ для пользователя предоставить наборы инструкций LLVM, которые я могу проанализировать в проходе LLVM

Я использую LLVM для выполнения статического анализа с использованием opt (то есть проход LLVM). Чтобы выполнить этот анализ, пользователь предоставляет мне текстовый файл, в котором перечислены несколько метрик и некоторые статистические данные о них. Мне нужно, чтобы пользователь также сопоставил каждую из этих метрик с набором инструкций LLVM. Следовательно, следующий может привести пример входного файла:

<name 1>.attribute_a = 12
<name 2>.attribute_a = 11
<name 3>.attribute_a = 0.6

<name 1>.instructions = Alloca,Load,Fence
<name 2>.instructions = ZExt,SExt
<name 3>.instructions = Shl,Xor,Add,FAdd,Invoke

И так далее. С анализом атрибутов уже позаботились, и у меня есть карта, которая указывает от имени каждой метрики на структуру данных, которые к ней относятся. Теперь я хотел бы проанализировать инструкции и добавить набор инструкций к этой структуре данных.

Я думаю, что и пользователю, и мне наиболее удобно, чтобы инструкции во входном файле были представлены в виде кодов операций, поэтому вместо вышеперечисленного мы могли бы получить что-то вроде:

<name 1>.attribute_a = 12

<name 1>.instructions = 26,27,30

Но я не совсем уверен. Каков наилучший способ представления входных данных в текстовом файле и каков наилучший способ фактически проанализировать данные, как только это будет сделано? Я думаю, что в итоге я буду использовать что-то вроде std::set<unsigned> представлять данные.

0

Решение

Я не думаю, что это имеет большое значение, если у вас есть взаимно-однозначное соответствие между сущностями в вашем текстовом файле и действующими инструкциями LLVM IR. Имена инструкций могут быть более удобочитаемыми, поэтому вы можете std::set<std::string>, Обратите внимание, что llvm::Instruction имеет метод getOpcodeName который вы можете сравнить с текстовым именем, прочитанным из файла.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]