Android Dalvik验证程序错误:试图从非引用寄存器v14获取类

Android Dalvik验证程序错误:试图从非引用寄存器v14获取类,android,dalvik,smali,Android,Dalvik,Smali,我正在尝试编写smali,出现以下错误: W/dalvikvm( 2798): VFY: tried to get class from non-ref register v14 (type=0) W/dalvikvm( 2798): VFY: rejecting opcode 0x6e at 0x001c W/dalvikvm( 2798): VFY: rejected Lcom/test/Smali1;.doTest(Lc om/test/Smali2;Z)Ljava/lang/Stri

我正在尝试编写smali,出现以下错误:

W/dalvikvm( 2798): VFY: tried to get class from non-ref register v14 (type=0)
W/dalvikvm( 2798): VFY:  rejecting opcode 0x6e at 0x001c
W/dalvikvm( 2798): VFY:  rejected Lcom/test/Smali1;.doTest(Lc
om/test/Smali2;Z)Ljava/lang/String;
W/dalvikvm( 2798): Verifier rejected class Lcom/test/Smali;
我的smali代码:

.method  doTest(Lcom/test/Smali2;Z)Ljava/lang/String;
.registers 22
.prologue
move/16 v16, p2
move-object/from16 v15, p1
move-object/from16 v14, p0
check-cast v15, Lcom/test/Smali2;
check-cast v14, Lcom/test/Smali1;
invoke-virtual {v14}, Lcom/test/Smali1;->test()

我试图通过查看CodeVerifier代码来发现问题,但我不确定为什么v14被检测为非引用寄存器

操作码0x6e失败,调用虚拟。type=0表示寄存器的类型未知。您是在显示整个方法,还是有一种方法可以从方法的更远处分支回调用虚拟指令?您可以在编译的dex文件上使用-r选项运行baksmali,这将显示寄存器类型如何传播的详细信息。