0

INVOKESPECIALバイトコード命令についてのリファレンスです。INVOKESPECIAL 命令を含む ASM フレームワークの AbstractInsnNode がある場合、ノードには命令のメソッド仕様が含まれますか? たとえば、次のようなコードを使用します。

String ins = insn.toString;

insn に INVOKESPECIAL 命令がある場合、私の ins には "invokespecial java/lang/StringBuffer/()V" のような文字列が含まれますか?

私がやりたいのは、INVOKESPECIAL 命令からメソッド仕様を取得し、それを文字列に格納して、プログラムが読み取れるようにすることです。

4

2 に答える 2

0

INVOKESPECIAL命令を含むASMフレームワークのAbstractInsnNodeがある場合、ノードには命令のメソッド仕様が含まれますか?

AFAIK、はい。これはのインスタンスでMethodInsnNodeあり、descフィールドはメソッド記述子文字列である必要があります。

insnにINVOKESPECIAL命令がある場合、私のinsには「invokespecialjava / lang / StringBuffer /()V」のような文字列が含まれますか?

実際には、3つのコンポーネントがあります。メソッド記述子文字列、メソッド名、および(この場合は実際の)メソッドを所有するクラスの内部名。

于 2013-01-14T03:14:11.240 に答える
0

実行時にクラスを読み取りますか? これを試して

    import org.objectweb.asm.ClassReader;
    import org.objectweb.asm.util.ASMifierClassVisitor;


    ClassReader cr = new ClassReader(b);
    cr.accept(new ASMifierClassVisitor(new PrintWriter(System.out)), 0);
于 2013-01-14T02:57:41.330 に答える