私はLLVMを使用して静的分析を実行していますopt
(つまり、LLVM Pass)。この分析を実行するために、ユーザーはいくつかのメトリックとそれらに関する統計をリストしたテキスト ファイルを提供してくれました。これらの各メトリックを一連の 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>
データを表すために何かを使用することになると思います。