组装 jasmin class 会导致反向运算符和比较
Assembling jasmin class leads to inverted operators and comparisons
当我尝试使用命令行 java -jar Jasmin.jar test.j
组装我的 test.j
jasmin 文件时,它会生成 test.class
文件,没有任何错误。除了运算符和比较,所有代码都是一样的,我所有的 +
都会变成 -
,==
都会变成 !=
等等。
我的 test.j
jasmin 文件添加了 2 个数字并检查它们是否等于 7,如果为真则打印一些内容,否则打印其他内容。最后它总是打印一行文本。
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
,它用于减法,而不是加法。汇编程序是正确的。您输出的程序集与您的预期行为不符。
当我尝试使用命令行 java -jar Jasmin.jar test.j
组装我的 test.j
jasmin 文件时,它会生成 test.class
文件,没有任何错误。除了运算符和比较,所有代码都是一样的,我所有的 +
都会变成 -
,==
都会变成 !=
等等。
我的 test.j
jasmin 文件添加了 2 个数字并检查它们是否等于 7,如果为真则打印一些内容,否则打印其他内容。最后它总是打印一行文本。
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
,它用于减法,而不是加法。汇编程序是正确的。您输出的程序集与您的预期行为不符。