组装jasmin类会导致倒置运算符和比较。

问题描述 投票:0回答:1

当我尝试组装我的 test.j 命令行的jasmin文件 java -jar Jasmin.jar test.j 它产生了 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

Assembled 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");
    }
}
jvm bytecode jasmin
1个回答
1
投票

你发布的jasmin代码包含 isub这是减法,不是加法。汇编程序是正确的。你输出的程序集不符合你的预期行为。

© www.soinside.com 2019 - 2024. All rights reserved.