Smali代码修改:将iget-wide替换为常量值失败求助
解决Smali方法返回long静态常量的问题
你的问题出在返回类型是64位的long(J),而const指令仅适用于32位整数,无法直接设置64位常量。要返回long类型的静态常量,需要使用Smali中的const-wide指令,它专门用于初始化64位寄存器对。
修改后的代码如下:
.method public final component1()J .registers 3 # 使用const-wide设置64位常量,500000L表示long类型的500000 const-wide v0, 500000L return-wide v0 .end method
说明:
const-wide会同时占用v0和v1两个寄存器(因为long是64位,需要两个32位寄存器存储),这也是原代码中.registers 3的原因(p0是this引用,加上v0、v1两个寄存器)。- 你也可以将常量写成十六进制形式,比如
0x7A120L(对应十进制500000),Smali编译器同样支持。
内容的提问来源于stack exchange,提问作者thescs
相关产品推荐
相关产品推荐

