style:修改比较运算指令 CMP_EQ 为 CMP_IEQ
This commit is contained in:
parent
d892437deb
commit
28e2a38c14
@ -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"); // 相等
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -42,12 +42,12 @@ public final class IROpCodeMappings {
|
||||
/* ────── 比较运算符映射 ────── */
|
||||
/** 32-bit(int)比较 */
|
||||
public static final Map<String, IROpCode> 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)比较 */
|
||||
|
||||
@ -10,12 +10,12 @@ import java.util.Map;
|
||||
public class IROpCodeUtils {
|
||||
private static final Map<IROpCode, IROpCode> 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),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user