我正在创建一个用于dalvik应用程序后处理的工具。对于测试,我想要创建包含所有操作码的代码。我很难理解const类和const-方法类型的操作码是干什么的。dalvik官方文件中的定义并没有为我澄清这个问题。
康斯特级 将对给定索引指定的类的引用移到指定的寄存器中。在指示类型是原语的情况下,这将存储对基元类型的退化类的引用。
什么是对全班的参考?据我所知,这不是指对象。
同
const-方法-类型 将对给定索引指定的方法原型的引用移到指定的寄存器中。
据我所知,这不是函数指针。函数指针由
康斯特-方法-处理 将对给定索引指定的方法句柄的引用移到指定的寄存器中。
我的问题是:
const-class和const-method类型是用来做什么的?什么样的java代码会在Dalvik中生成这些操作码?
也许值得一提的是,我的java体验相当低--我是c++类型的人。
发布于 2018-12-18 12:48:23
当引用对象的类属性时,可以生成const-class
。例如Class cls = MyObject.class
。
据我所知,方法句柄和类型不是由java代码生成的。您可以使用反射引用它们,但我不认为这样做实际上会生成const-method-type
或const-method-handle
指令
它们支持invoke-custom
的强制转换,它主要用于编译为java字节码并最终编译为dalvik字节码的其他语言。
https://stackoverflow.com/questions/53831599
复制相似问题