Jasminbytecode говорит, что отсутствуют аргументы для инструкции Перейти - PullRequest
2 голосов
/ 04 мая 2020

Я пытаюсь реализовать ветвление в моей программе с байт-кодом jasmin, но что бы я ни пытался, я всегда получаю синтаксическую ошибку при ветвлении. Код должен проверить, равны ли 2 числа, и если true, вывести «true», иначе перейти к метке конца и выйти из программы.

В качестве примера я использовал официальную инструкцию jasmin .

Ошибка:

test.j:13: Warning - Syntax error.
if_icmpeg L1
             ^
test.j:15: JAS Error: Missing arguments for instruction goto.
L
 ^
test.j: Found 2 errors

Файл байтового кода Jasmin:

.class public test
.super java/lang/Object

.method public static main([Ljava/lang/String;)V
.limit stack 99
.limit locals 99

getstatic java/lang/System/out Ljava/io/PrintStream;
ldc 5
ldc 3
isub
ldc 7
if_icmpeg L1
goto LE1
L1:
ldc "true"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
LE1:
return
.end method

1 Ответ

3 голосов
/ 04 мая 2020

У вас есть опечатка. Это должно быть if_icmpeq, а не if_icmpeg.

Кстати, вы не пытались попробовать Krakatau сборщик ? Я считаю, что это даст более полезное сообщение об ошибке в этой ситуации.

...