android – 理解invoke-kind / range参数字数

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

句法

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

参数

A: argument word count (8 bits)

B: method reference index (16 bits)

C:first argument register (16 bits)

N = A + C – 1

正如您所看到的,字节码语法中提到了B和C,但未提及A,A参数位于何处以及它的含义是什么?

谢谢.

最佳答案 A包含传递给方法的寄存器数.

因此,如果你有invoke-static / range {v0 .. v7}方法,那么A将是8,C是0.你可以从底部的公式看到N,即传递的最后一个寄存器,被计算为N = AC – 1,因此N = 0 8 – 1 = 7

点赞