Smali .local 格式

Smali .local format

我用baksmali反汇编了一个Android应用,研究了生成的smali代码。 类 之一包含以下行:

.local v1, "future":Lcom/android/volley/toolbox/RequestFuture;, "Lcom/android/volley/toolbox/RequestFuture<Ljava/lang/Void;>;"

我不太清楚这行代码的意思。

v1是否包含一个RequestFuture<Void>,对应原代码中的变量future? (即原始代码是:RequestFuture<Void> future;?)还是有所不同?

是的,这是可以选择存在的调试信息的一部分。它在调试时使用,例如评估局部变量的值。

您提到的 .local 就是您所说的意思。 v1 寄存器保存了来自原始源的 future 变量的值,它的类型是 RequestFuture<Void>

.local 指令等效于该方法的调试信息中的 DBG_START_LOCALDBG_START_LOCAL_EXTENDED 指令,如 dex format

所定义