You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:05:14