当我使用smali来解释我的mod文件时,我收到了这个错误:
patch \ android \ view \ Choreographer.smali [1392,4]所有注册参数必须 适合4位
我找到第1392行,发现:
invoke-direct {p0, p1, p2, p3}, Landroid/view/Choreographer;->MyFunc(JI)V
invoke-static {}, Ljava/lang/System;->nanoTime()J (line 1392)
move-result-wide v11
有人知道我该如何修复它?我已经阅读了这篇文章http://forum.xda-developers.com/showthread.php?t=733275,但它并没有帮助,因为这一行 没有使用任何登记册。
答案 0 :(得分:1)
问题出在第一行
invoke-direct {p0, p1, p2, p3}, Landroid/view/Choreographer;->MyFunc(JI)V
您只能使用寄存器v0-v15,因为数字寄存器索引必须符合4位。该方法显然具有大量寄存器,因此至少p3映射到高于v15的寄存器。
幸运的是,寄存器是连续的,因此修复很简单
invoke-direct/range {p0 .. p3}, Landroid/view/Choreographer;->MyFunc(JI)V
/ range变量接受连续范围的寄存器,最多可以寻址v65535。