设置数组引用等于jasmin asembeler

问题描述 投票:0回答:1

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

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,但是,这是针对不同的语言。

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

它根本不是关于Jasmin或字节码。

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

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