组装jasmin类会导致反向运算符和比较



当我尝试用命令行java -jar Jasmin.jar test.j组装我的test.jjasmin文件时,它会生成没有任何错误的test.class文件。除了运算符和比较之外,所有的代码都是一样的,我的所有+都将变成-==都将变成!=,依此类推。

我的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.class,此处的5 - 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");
}
}

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

相关内容

  • 没有找到相关文章

最新更新