Jasmin汇编程序使用数组分配状态

问题描述 投票:0回答:1
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 stack数组aload不能放入局部变量吗?

java compiler-construction jvm jasmin
1个回答
2
投票

这是导致问题的istore指令。在Virtual Machine Specification中定义为

将int存储到局部变量中

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

© www.soinside.com 2019 - 2024. All rights reserved.