Я пишу оптимизацию для своего компилятора, и я использую LLVM IR как мой промежуточный язык. Я проанализировал входной файл и преобразовал его в LLVM IR. Во время оптимизации мне нужно получить операнды инструкций. Я могу найти getOpCode() в классе Instruction, но не смог получить список операндов. Как мне это сделать?Получение операндов в инструкции LLVM
15
A
ответ
23
Есть много операндов аксессорах, как правило, предоставляемые классом llvm::User
, чья Doxygen страница: http://llvm.org/doxygen/classllvm_1_1User.html Там в getNumOperands()
и getOperand(unsigned int)
, а также итератор в стиле op_begin()
и методы доступа op_end()
.
Например, если инструкция %X = add i32 %a, 2
, I->getOperand(0)
вернет Value*
для %a
и I->getOperand(1)
возвратит Value*
для i32 2
(преобразуемого ConstantInt).
1
Например, если у вас есть инструкция * I1 - I1-> getOperand (0) вернет первый операнд типа Value *. Вы можете пойти дальше, используя I1-> getOperand (0) -> getName(), который вернет имя операнда. См. Методы класса значений.
Смежные вопросы
- 1. llvm номер строки инструкции
- 2. LLVM Инструкции по подаче
- 3. Реплицировать инструкции llvm
- 4. вставки инструкции LLVM IR
- 5. Использование инструкции * llvm :: Инструкция :: user_back()
- 6. Удаление метаданных из инструкции LLVM
- 7. LLVM не используя машинные инструкции
- 8. Инструкции Phi на LLVM IR
- 9. Получение «минимального» SSA от LLVM
- 10. Установить следующий узел инструкции в LLVM IR
- 11. Поиск списка преемников инструкции в LLVM
- 12. Как добавить несколько операндов в MDNode или метаданные в LLVM?
- 13. Как изменить тип операндов в Callinst в llvm?
- 14. LLVM получить инструкции по хранению для инструкции загрузки
- 15. Инструкции по стиранию от LLVM IR
- 16. Создание новой инструкции по хранению LLVM
- 17. LLVM Как получить возвращаемое значение инструкции
- 18. LLVM - Как получить переменную результата инструкции
- 19. Написать пропуск, чтобы заменить все инструкции LLVM
- 20. LLVM pass to count vector type инструкции
- 21. LLVM Не можете найти getelementptr инструкции
- 22. LLVM: получить функцию из инструкции «вызов»
- 23. NASM: Макросы не расширены в качестве операндов инструкции
- 24. Получение инструкции if в HAML
- 25. Как получить имя регистра из инструкции загрузки в llvm
- 26. Положение LLVM IR метки предшественника в инструкции phi node
- 27. неожиданный токен в операнде LLVM, компилирующий файл сборки. Альтернативные инструкции?
- 28. Стирание первой инструкции в базовом блоке от LLVM IR?
- 29. Почему 0xE1 0x4F разбирает различные инструкции в LLVM и NDISASM?
- 30. Получение двух строк из инструкции