使用 Javassist 获取字节码的参数
Getting the arguments for the bytecode using Javassist
http://lpaste.net/338173 looks like this: http://lpaste.net/338175 的反汇编代码(使用 javap -c),在第三列中,有 200 作为 "sipush" 的参数,我如何从 class 中获取它使用 javassist 的文件?
sipush
是一个字节码,它接受一个单独的两字节参数,该参数是一个要压入操作数堆栈的数字。在 Javassist 中,您可以通过 CtMethod
的 MethodInfo
中可用的 CodeAttribute
遍历方法的所有字节码。在您的情况下,这将是第一个字节代码,但您可以检查是否达到 Opcode.SIPUSH
。迭代到此指令后,您可以通过迭代器的 s16bitAt
方法读取 2 字节参数。该方法采用从零开始的索引。在您的情况下,这会使 sipush
的参数为零,返回 200
作为值。
http://lpaste.net/338173 looks like this: http://lpaste.net/338175 的反汇编代码(使用 javap -c),在第三列中,有 200 作为 "sipush" 的参数,我如何从 class 中获取它使用 javassist 的文件?
sipush
是一个字节码,它接受一个单独的两字节参数,该参数是一个要压入操作数堆栈的数字。在 Javassist 中,您可以通过 CtMethod
的 MethodInfo
中可用的 CodeAttribute
遍历方法的所有字节码。在您的情况下,这将是第一个字节代码,但您可以检查是否达到 Opcode.SIPUSH
。迭代到此指令后,您可以通过迭代器的 s16bitAt
方法读取 2 字节参数。该方法采用从零开始的索引。在您的情况下,这会使 sipush
的参数为零,返回 200
作为值。