私は CIL の初心者で、CIL の拡張機能を変更しようとしています。
これが私が扱っているCコードの一部です:
int main()
{
int a = 1;
int b = 2;
int *p = &a;
*p = 2;
b = *p;
}
lvalの型を出力するためにCILを使用しています(また、正しい式の型を出力しようとしました)
コードは次のとおりです。
method vinst(i) =
match i with
| Set (lv, e, _) ->
let tt = typeOf e in
let ds_type () i = Pretty.sprint max_int (d_type () tt) in
let i_str = Printf.sprintf "%a" ds_type i in
(E.log "%s\n" i_str); SkipChildren
| _ -> DoChildren
驚いたことに、生成された結果は次のとおりです。
int
int
int *
int
int
int
そして、正しい式のタイプを出力しようとしましたが、結果も次のようになります。
int
int
int *
int
int
int
わからないのですが、なぜポインター型の使用法が見つからないのですか?
誰か助けてくれませんか?