Ассемблер в Jasmin - получение синтаксической ошибки
В putty я пытаюсь создать программу Jasmin, которая при сборке и запуске как Java-программа выдаст целое число "431". Когда я пытаюсь собрать программу, консоль говорит, что в строке 11 есть синтаксическая ошибка. У меня проблемы с выяснением, что это такое. Вот мой код:
.class public Lab3_JasminExample
.super java/lang/Object
.method public <init>()V
aload_0
invokespecial java/lang/Object/<init>()V
return
.end method
.method public static main ([Ljava.lang.String;)V
.limit stack 10
.limit locals 10
getstatic java/lang/System/out Ljava/io/PrintStream;
sipush 431
invokevirtual java/io/PrintStream/println(I)V
return
.end method
Строка 11 будет ".limit stack 10", и я не вижу, что не так с тем, как я это написал. Что я делаю неправильно?
1 ответ
Об ошибках можно сообщить в строке, но они могут быть вызваны предыдущими (или следующими!) Строками, поэтому всегда оглядывайте оскорбительную строку.
Мой Жасмин (версия 2.4) правильно сообщает об ошибке в строке 10
a.j:10: Warning - Syntax error.
.method public static main ([Ljava.lang.String;)V
^
Это действительно глупая ошибка: между именем метода есть пробел (main
) и его дескриптор (([Ljava.lang.String;)V
)
Строка 10 должна быть .method public static main([Ljava.lang.String;)V