理解invoke-kind / range参数字数

时间:2016-02-09 12:48:10

标签: android dalvik smali

我无法理解invoke-kind / range操作码的结构,

语法

invoke-kind/range {vCCCC .. vNNNN}, meth@BBBB

参数

  

A:参数字数(8位)

     

B:方法参考索引(16位)

     

C:第一个参数寄存器(16位)

     

N = A + C - 1

正如你所看到的,在字节码语法中提到了B和C,但没有提到A,A参数在哪里定位,它究竟意味着什么?

感谢。

1 个答案:

答案 0 :(得分:2)

A包含传递给方法的寄存器数。

所以,如果你有invoke-static/range {v0 .. v7}, method,那么A将是8,而C是0.你可以从底部的公式看到,N,即最后传递的寄存器,计算为N = A + C - 1 ,所以N = 0 + 8 - 1 = 7