Jvm Jasmin字符串数组声明/初始化错误
我正在编写一个生成Jasmin代码的编译器,并希望创建一个数组声明,如下所示:Jvm Jasmin字符串数组声明/初始化错误,jvm,jasmin,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
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不同的类型。如果是这样,字符串的正确类型是什么?没关系,我已经解决了 应使用以下行创建字符串类型的对象数组:
anewarray Ljava/lang/String;