我无法理解invoke-kind / range操作码的结构,
语法
invoke-kind/range {vCCCC .. vNNNN}, meth@BBBB
参数
A:参数字数(8位)
B:方法参考索引(16位)
C:第一个参数寄存器(16位)
N = A + C - 1
正如你所看到的,在字节码语法中提到了B和C,但没有提到A,A参数在哪里定位,它究竟意味着什么?
感谢。
答案 0 :(得分:2)
A包含传递给方法的寄存器数。
所以,如果你有invoke-static/range {v0 .. v7}, method
,那么A将是8,而C是0.你可以从底部的公式看到,N,即最后传递的寄存器,计算为N = A + C - 1
,所以N = 0 + 8 - 1 = 7