1

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 とは異なる型を使用する必要があります。もしそうなら、文字列に使用する正しい型は何ですか?

4

1 に答える 1