Язык ассемблера в Jasmin - получение синтаксической ошибки

В шпаклевке я пытаюсь создать программу 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», и я не понимаю, что не так с тем, как я это написал. Что я делаю неправильно?


person Darien Springer    schedule 08.03.2017    source источник


Ответы (1)


Об ошибках можно сообщать в строке, но они могут быть вызваны предыдущими (или последующими!) строками, поэтому всегда осматривайте ошибочную строку.

Мой Jasmin (версия 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

person Margaret Bloom    schedule 08.03.2017