什么是 const-class 和 const-method-type 操作码?什么 java 代码生成它们?
What are const-class and const-method-type opcodes for? What java code generates them?
我正在创建一个用于 post 处理 dalvik 应用程序的工具。对于测试,我想创建包含每个操作码的代码。我在理解 const-class 和 const-method-type 操作码的作用时遇到问题。 dalvik 官方文档中的定义并没有为我澄清问题。
const-class
Move a reference to the class specified by the given index into the
specified register. In the case where the indicated type is primitive,
this will store a reference to the primitive type's degenerate class.
什么是对class的引用?据我所知,这不是对对象的引用。
同
const-method-type
Move a reference to the method prototype specified by the given index
into the specified register.
据我了解,这不是函数指针。函数指针由
处理
const-method-handle
Move a reference to the method handle specified by the given index
into the specified register.
我的问题是:
const-class 和 const-method-type 有什么用?什么样的 java 代码会在 Dalvik 中生成这些操作码?
也许值得一提的是我的 java 经验很低 - 我是 c++ 类型的人。
当你引用一个对象的class属性时,可以生成const-class
。例如Class cls = MyObject.class
.
据我所知,方法句柄和类型不是由 java 代码生成的。您可以使用反射来引用它们,但我认为这样做实际上不会生成 const-method-type
或 const-method-handle
指令
他们支持 invoke-custom
的强制转换,主要供其他语言使用,这些语言被编译为 java 字节码,最终被编译为 dalvik 字节码。
我正在创建一个用于 post 处理 dalvik 应用程序的工具。对于测试,我想创建包含每个操作码的代码。我在理解 const-class 和 const-method-type 操作码的作用时遇到问题。 dalvik 官方文档中的定义并没有为我澄清问题。
const-class
Move a reference to the class specified by the given index into the specified register. In the case where the indicated type is primitive, this will store a reference to the primitive type's degenerate class.
什么是对class的引用?据我所知,这不是对对象的引用。
同
const-method-type
Move a reference to the method prototype specified by the given index into the specified register.
据我了解,这不是函数指针。函数指针由
处理const-method-handle
Move a reference to the method handle specified by the given index into the specified register.
我的问题是:
const-class 和 const-method-type 有什么用?什么样的 java 代码会在 Dalvik 中生成这些操作码?
也许值得一提的是我的 java 经验很低 - 我是 c++ 类型的人。
const-class
。例如Class cls = MyObject.class
.
据我所知,方法句柄和类型不是由 java 代码生成的。您可以使用反射来引用它们,但我认为这样做实际上不会生成 const-method-type
或 const-method-handle
指令
他们支持 invoke-custom
的强制转换,主要供其他语言使用,这些语言被编译为 java 字节码,最终被编译为 dalvik 字节码。