理解 invoke-kind/range 参数字数
understanding invoke-kind/range argument word count
我无法理解 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}, method
,那么A就是8,C就是0。从底部的公式可以看出,最后传递的寄存器N计算为N = A + C - 1
, 所以 N = 0 + 8 - 1 = 7
我无法理解 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}, method
,那么A就是8,C就是0。从底部的公式可以看出,最后传递的寄存器N计算为N = A + C - 1
, 所以 N = 0 + 8 - 1 = 7