Java 使用数组赋值语句的Jasmin汇编程序

Java 使用数组赋值语句的Jasmin汇编程序,java,compiler-construction,jvm,jasmin,Java,Compiler Construction,Jvm,Jasmin,假设我们想在java jvm中编译类似的东西。如果一个人只做一个 var a int[1]; var aa int[1]; aa = a; 然而,这是不可行的,因为它抛出了一个(类:test,方法:main signature:()V)期望在堆栈上找到整数,您不能将数组放入局部变量中吗 导致问题的是istore指令。在这个世界上,它的定义是 将int存储到局部变量中 您正在尝试存储数组引用,因此astore是正确的指令类型,就像您在newarray指令之后所做的那样。是istore指令导致了问

假设我们想在java jvm中编译类似的东西。如果一个人只做一个

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

然而,这是不可行的,因为它抛出了一个
(类:test,方法:main signature:()V)期望在堆栈上找到整数
,您不能
将数组放入局部变量中吗

导致问题的是
istore
指令。在这个世界上,它的定义是

将int存储到局部变量中


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

istore
指令导致了问题。在这个世界上,它的定义是

将int存储到局部变量中

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

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