diff --git a/jasm-composition-jvm/src/main/java/me/darknet/assembler/compile/analysis/jvm/ValuedJvmAnalysisEngine.java b/jasm-composition-jvm/src/main/java/me/darknet/assembler/compile/analysis/jvm/ValuedJvmAnalysisEngine.java index 9038d3b..b44310f 100644 --- a/jasm-composition-jvm/src/main/java/me/darknet/assembler/compile/analysis/jvm/ValuedJvmAnalysisEngine.java +++ b/jasm-composition-jvm/src/main/java/me/darknet/assembler/compile/analysis/jvm/ValuedJvmAnalysisEngine.java @@ -203,8 +203,8 @@ public void execute(SimpleInstruction instruction) { } } case FCMPL -> { - Value value1 = frame.pop2(); - Value value2 = frame.pop2(); + Value value1 = frame.pop(); + Value value2 = frame.pop(); if (value1 instanceof Value.KnownFloatValue float1 && value2 instanceof Value.KnownFloatValue float2) { float a = float1.value(); float b = float2.value(); @@ -217,8 +217,8 @@ public void execute(SimpleInstruction instruction) { } } case FCMPG -> { - Value value1 = frame.pop2(); - Value value2 = frame.pop2(); + Value value1 = frame.pop(); + Value value2 = frame.pop(); if (value1 instanceof Value.KnownFloatValue float1 && value2 instanceof Value.KnownFloatValue float2) { float a = float1.value(); float b = float2.value(); diff --git a/jasm-composition-jvm/src/test/resources/samples/jasm/Example-float-cmp.jasm b/jasm-composition-jvm/src/test/resources/samples/jasm/Example-float-cmp.jasm new file mode 100644 index 0000000..bbadc4b --- /dev/null +++ b/jasm-composition-jvm/src/test/resources/samples/jasm/Example-float-cmp.jasm @@ -0,0 +1,18 @@ +.super java/lang/Object +.class public super Example { + .method public exampleMethod ()I { + parameters: { this }, + code: { + A: + ldc 1.25F + ldc 5.55F + fcmpg + ldc 1.25F + ldc 5.55F + fcmpl + iadd + ireturn + B: + } + } +} \ No newline at end of file