设置数组引用等于Jasmin Asembeler

时间:2018-12-01 15:25:29

标签: compiler-construction jvm jasmin

我在弄清楚如何分配给茉莉花中彼此相等的数组时遇到一些问题。我希望编译如下代码

array a[1];
array b[1];

a = b;

现在,我想要b的实际副本不将它们分配给同一件事。假设a在寄存器0中,b在寄存器1

然后以下是我认为可行的

aload   1
astore  0

但是实际上,如果现在我改变b,那么a也会改变。我将如何在Jasmin中执行此操作,以使数组彼此区分,例如

array a[1];
array b[1];
a[1] = 'a';
b[1] = 'b';
a = b;
b[1] = 'a';
print a; //should print 'b' but prints 'a' currently
print b; //should print 'a' and does currently

请注意,我编写的代码是正确的Java,但是,这是另一种语言。

1 个答案:

答案 0 :(得分:1)

这根本与Jasmin或字节码无关。

如果要复制数组的内容,请使用Object.clone指令调用invokevirtual或使用{{3}调用Arrays.copyOf / System.arraycopy }}。