Jasmin数组字符串声明/初始化错误

时间:2014-07-12 14:14:20

标签: jvm jasmin

我正在编写一个生成Jasmin代码的编译器,并希望创建一个数组声明,如下所示:

string[] name = { "asd", "asd" };

目前生成以下代码:

ldc 2               ; array size
newarray char       ; create new array of chars
astore 8            ; store array at loc 8
ldc "asd"           ; push value 1 onto stack
ldc 0               ; push index onto stack
aload 8             ; push array reference onto stack
aastore             ; store value in array at index
ldc "asd"           ; push value 2 onto stack
ldc 1               ; push index onto stack
aload 8             ; push array reference onto stack
aastore             ; store value in array at index

我认为这是正确的方法,但我收到以下错误:

java.lang.VerifyError: (class: helloworld, method: main signature: ([Ljava/lang/String;)V) Expecting to find array of objects or arrays on stack

我是否以错误的顺序将东西推入堆栈?或者我应该在newarray线上使用与char不同的类型。如果是这样,Strings使用的正确类型是什么?

1 个答案:

答案 0 :(得分:1)

没关系,我已经解决了。

应该使用以下行来创建String类型的对象数组:

anewarray Ljava/lang/String;