diff --git a/src/main/java/org/jcnc/snow/compiler/backend/util/IROpCodeMapper.java b/src/main/java/org/jcnc/snow/compiler/backend/util/IROpCodeMapper.java index abeb48f..f2d2997 100644 --- a/src/main/java/org/jcnc/snow/compiler/backend/util/IROpCodeMapper.java +++ b/src/main/java/org/jcnc/snow/compiler/backend/util/IROpCodeMapper.java @@ -83,12 +83,12 @@ public final class IROpCodeMapper { // 比较运算映射 // 整形32位比较运算映射 - opcodeMap.put(IROpCode.CMP_EQ, "IC_E"); // 相等 - opcodeMap.put(IROpCode.CMP_NE, "IC_NE"); // 不等 - opcodeMap.put(IROpCode.CMP_LT, "IC_L"); // 小于 - opcodeMap.put(IROpCode.CMP_GT, "IC_G"); // 大于 - opcodeMap.put(IROpCode.CMP_LE, "IC_LE"); // 小于等于 - opcodeMap.put(IROpCode.CMP_GE, "IC_GE"); // 大于等于 + opcodeMap.put(IROpCode.CMP_IEQ, "IC_E"); // 相等 + opcodeMap.put(IROpCode.CMP_INE, "IC_NE"); // 不等 + opcodeMap.put(IROpCode.CMP_ILT, "IC_L"); // 小于 + opcodeMap.put(IROpCode.CMP_IGT, "IC_G"); // 大于 + opcodeMap.put(IROpCode.CMP_ILE, "IC_LE"); // 小于等于 + opcodeMap.put(IROpCode.CMP_IGE, "IC_GE"); // 大于等于 // 整形64位比较运算映射 opcodeMap.put(IROpCode.CMP_LEQ, "LC_E"); // 相等 diff --git a/src/main/java/org/jcnc/snow/compiler/ir/builder/ExpressionBuilder.java b/src/main/java/org/jcnc/snow/compiler/ir/builder/ExpressionBuilder.java index d85f6bd..f53d8cc 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/builder/ExpressionBuilder.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/builder/ExpressionBuilder.java @@ -91,7 +91,7 @@ public record ExpressionBuilder(IRContext ctx) { // !x → (x == 0) if (op.equals("!")) { IRVirtualRegister zero = InstructionFactory.loadConst(ctx, 0); - return InstructionFactory.binOp(ctx, IROpCode.CMP_EQ, val, zero); + return InstructionFactory.binOp(ctx, IROpCode.CMP_IEQ, val, zero); } throw new IllegalStateException("未知一元运算符: " + op); diff --git a/src/main/java/org/jcnc/snow/compiler/ir/builder/StatementBuilder.java b/src/main/java/org/jcnc/snow/compiler/ir/builder/StatementBuilder.java index 230dbd5..2290278 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/builder/StatementBuilder.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/builder/StatementBuilder.java @@ -223,7 +223,7 @@ public class StatementBuilder { } else { IRVirtualRegister condReg = expr.build(cond); IRVirtualRegister zero = InstructionFactory.loadConst(ctx, 0); - InstructionFactory.cmpJump(ctx, IROpCode.CMP_EQ, condReg, zero, falseLabel); + InstructionFactory.cmpJump(ctx, IROpCode.CMP_IEQ, condReg, zero, falseLabel); } } } diff --git a/src/main/java/org/jcnc/snow/compiler/ir/core/IROpCode.java b/src/main/java/org/jcnc/snow/compiler/ir/core/IROpCode.java index 4696db8..c45a454 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/core/IROpCode.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/core/IROpCode.java @@ -67,12 +67,12 @@ public enum IROpCode { NEG_D64, // 64位浮点取负 /* ───── 逻辑与比较运算指令(32位整数:int) ───── */ - CMP_EQ, // 32位相等比较:a == b - CMP_NE, // 32位不等比较:a != b - CMP_LT, // 32位小于比较:a < b - CMP_GT, // 32位大于比较:a > b - CMP_LE, // 32位小于等于:a <= b - CMP_GE, // 32位大于等于:a >= b + CMP_IEQ, // 32位相等比较:a == b + CMP_INE, // 32位不等比较:a != b + CMP_ILT, // 32位小于比较:a < b + CMP_IGT, // 32位大于比较:a > b + CMP_ILE, // 32位小于等于:a <= b + CMP_IGE, // 32位大于等于:a >= b /* ───── 逻辑与比较运算指令(64位整数:long) ───── */ CMP_LEQ, // 64位相等比较:a == b diff --git a/src/main/java/org/jcnc/snow/compiler/ir/core/IROpCodeMappings.java b/src/main/java/org/jcnc/snow/compiler/ir/core/IROpCodeMappings.java index 6efd59b..32593d9 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/core/IROpCodeMappings.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/core/IROpCodeMappings.java @@ -42,12 +42,12 @@ public final class IROpCodeMappings { /* ────── 比较运算符映射 ────── */ /** 32-bit(int)比较 */ public static final Map CMP_I32 = Map.of( - "==", IROpCode.CMP_EQ, - "!=", IROpCode.CMP_NE, - "<", IROpCode.CMP_LT, - ">", IROpCode.CMP_GT, - "<=", IROpCode.CMP_LE, - ">=", IROpCode.CMP_GE + "==", IROpCode.CMP_IEQ, + "!=", IROpCode.CMP_INE, + "<", IROpCode.CMP_ILT, + ">", IROpCode.CMP_IGT, + "<=", IROpCode.CMP_ILE, + ">=", IROpCode.CMP_IGE ); /** 64-bit(long)比较 */ diff --git a/src/main/java/org/jcnc/snow/compiler/ir/utils/IROpCodeUtils.java b/src/main/java/org/jcnc/snow/compiler/ir/utils/IROpCodeUtils.java index df7118f..6e782a7 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/utils/IROpCodeUtils.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/utils/IROpCodeUtils.java @@ -10,12 +10,12 @@ import java.util.Map; public class IROpCodeUtils { private static final Map INVERT = Map.ofEntries( // 32-bit - Map.entry(IROpCode.CMP_EQ, IROpCode.CMP_NE), - Map.entry(IROpCode.CMP_NE, IROpCode.CMP_EQ), - Map.entry(IROpCode.CMP_LT, IROpCode.CMP_GE), - Map.entry(IROpCode.CMP_GE, IROpCode.CMP_LT), - Map.entry(IROpCode.CMP_GT, IROpCode.CMP_LE), - Map.entry(IROpCode.CMP_LE, IROpCode.CMP_GT), + Map.entry(IROpCode.CMP_IEQ, IROpCode.CMP_INE), + Map.entry(IROpCode.CMP_INE, IROpCode.CMP_IEQ), + Map.entry(IROpCode.CMP_ILT, IROpCode.CMP_IGE), + Map.entry(IROpCode.CMP_IGE, IROpCode.CMP_ILT), + Map.entry(IROpCode.CMP_IGT, IROpCode.CMP_ILE), + Map.entry(IROpCode.CMP_ILE, IROpCode.CMP_IGT), // 64-bit Map.entry(IROpCode.CMP_LEQ, IROpCode.CMP_LNE), Map.entry(IROpCode.CMP_LNE, IROpCode.CMP_LEQ),