0
var a int[1];
var aa int[1];
aa = a;

假设我们想在 java jvm 中编译这样的东西。它会接缝,一个人会做一个

ldc 1
newarray    int
astore  0
ldc 1
newarray    int
astore  1
aload   0
istore  1

然而,这是行不通的,它是将一个(class: test, method: main signature: ()V) Expecting to find integer on stackCan you not aloadan array 扔到一个局部变量中吗?

4

1 回答 1

2

这是istore导致问题的指令。在虚拟机规范中它被定义为

将 int 存储到局部变量中

您正在尝试存储数组引用,因此astore正确的指令类型也是如此,就像您在newarray指令之后所做的那样。

于 2018-11-30T17:27:31.867 回答