Ассемблер в 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

Другие вопросы по тегам