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

Я помещаю вещи в стек в неправильном порядке? Или я должен использовать другой тип, чем char в строке newarray. Если это так, какой правильный тип использовать для строк?

1 ответ

Решение

Неважно, я уже решил это.

Нужно было использовать следующую строку для создания массива объектов типа String:

anewarray Ljava/lang/String;
Другие вопросы по тегам