-1

当我尝试使用命令行组装我的test.jjasmin 文件时,java -jar Jasmin.jar test.j它会生成test.class没有任何错误的文件。除了运算符和比较之外,所有代码都是相同的,all my +will become -==all become!=等等。

我的test.jjasmin 文件添加了 2 个数字并检查它们是否等于 7,如果为 true,则打印一些内容,否则打印其他内容。最后它总是会打印一行文本。

test.j文件:

.class public test
.super java/lang/Object

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

ldc 5
ldc 3
isub
ldc 7
if_icmpne L1
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "It is not bigger"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
goto LE1
L1:
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "It is bigger"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
LE1:
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "this will always print"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
return
.end method

组装好的test.class5 - 3 != 7应该在5 + 3 == 7这里:

public class test {
    public static void main(String[] var0) {
        if (5 - 3 != 7) {
            System.out.println("It is not bigger");
        } else {
            System.out.println("It is bigger");
        }

        System.out.println("this will always print");
    }
}
4

1 回答 1

0

您发布的茉莉代码包含isub,用于减法,而不是加法。汇编程序是正确的。您正在输出与您的预期行为不匹配的程序集。

于 2020-05-07T17:39:08.143 回答