コンパイラの最適化を作成しています。中間言語としてLLVM IRを使用します。私は入力ファイルを解析し、それをLLVM IRに変換しました。最適化中に、私は命令のオペランドを取得する必要があります。命令クラスでgetOpCode()を見つけることができましたが、オペランドリストを取得できませんでした。それについてどうすればいいですか?LLVM命令のオペランドの取得
15
A
答えて
23
は、通常、そのdoxygenのページでクラスllvm::User
によって提供オペランドアクセサ、たくさんあります。http://llvm.org/doxygen/classllvm_1_1User.htmlありgetNumOperands()
とgetOperand(unsigned int)
だけでなく、イテレータスタイルだop_begin()
とop_end()
をアクセサ。命令%X = add i32 %a, 2
所与例えば
、I->getOperand(0)
は%a
ためValue*
戻り、I->getOperand(1)
は(ConstantIntにキャスト)i32 2
ためValue*
を返します。
1
例えば、* I1 - I1 - > getOperand(0)命令はValue *型の最初のオペランドを返します。オペランドの名前を返すI1-> getOperand(0) - > getName()を使用してさらに進むことができます。値クラスのメソッドを参照してください。
関連する問題
- 1. llvm - br命令のラベルを取得
- 2. LLVM IR alloca命令
- 3. 組立MOV命令のオペランド
- 4. llvm命令の行番号
- 5. LLVM IR命令のテキスト表現を取得する方法は?
- 6. 使い方* LLVM ::命令:: user_back()
- 7. LLVMでの命令の置き換え
- 8. *命令オペランドの前に、GNUアセンブリ、AMD64
- 9. x86 assembly-masm32:無効な命令のオペランド
- 10. LLVM命令の変数名とパラメータ
- 11. x86のnopl命令がオペランドを取得するのはなぜですか?
- 12. x86アセンブリの乗算命令と除算命令のオペランド、16ビット以上
- 13. LLVM命令を挿入するには?
- 14. LLVM命令からファイル名とディレクトリを取得する方法は?
- 15. X86 'cmpps'命令とLLVM IR 'fcmp'命令は入れ替え可能ですか?
- 16. C/C++で命令のアドレスを取得
- 17. オペランドのx86-64上のCALL命令の世代AMD
- 18. LLVMでの命令の後継のリストの検索
- 19. LLVM内の命令の書き込みまたは読み取り
- 20. LLVM:命令クラスまたは値クラスの "uses"と "user"の違い
- 21. llvmの命令の範囲を削除する
- 22. llvm - タイプbrの命令のラベルフィールドで参照される基本ブロックの最初の命令を取得します。
- 23. MOVXZをレジスタに - "無効な命令のオペランド"
- 24. 複数のllvm命令を削除する
- 25. LLVM分岐命令:if文またはループ内のif?
- 26. LLVMの命令で参照されるすべてのグローバル変数を取得するには?
- 27. RDTSCPと命令命令
- 28. 命令レベルプロファイリング:命令ポインタの意味?
- 29. x86アセンブリ極端な初心者質問: "無効な命令オペランド"?
- 30. エラーprogram.asm(8):エラーA2070:無効な命令オペランド