style:修改比较运算指令 CMP_EQ 为 CMP_IEQ
This commit is contained in:
parent
d892437deb
commit
28e2a38c14
@ -83,12 +83,12 @@ public final class IROpCodeMapper {
|
|||||||
|
|
||||||
// 比较运算映射
|
// 比较运算映射
|
||||||
// 整形32位比较运算映射
|
// 整形32位比较运算映射
|
||||||
opcodeMap.put(IROpCode.CMP_EQ, "IC_E"); // 相等
|
opcodeMap.put(IROpCode.CMP_IEQ, "IC_E"); // 相等
|
||||||
opcodeMap.put(IROpCode.CMP_NE, "IC_NE"); // 不等
|
opcodeMap.put(IROpCode.CMP_INE, "IC_NE"); // 不等
|
||||||
opcodeMap.put(IROpCode.CMP_LT, "IC_L"); // 小于
|
opcodeMap.put(IROpCode.CMP_ILT, "IC_L"); // 小于
|
||||||
opcodeMap.put(IROpCode.CMP_GT, "IC_G"); // 大于
|
opcodeMap.put(IROpCode.CMP_IGT, "IC_G"); // 大于
|
||||||
opcodeMap.put(IROpCode.CMP_LE, "IC_LE"); // 小于等于
|
opcodeMap.put(IROpCode.CMP_ILE, "IC_LE"); // 小于等于
|
||||||
opcodeMap.put(IROpCode.CMP_GE, "IC_GE"); // 大于等于
|
opcodeMap.put(IROpCode.CMP_IGE, "IC_GE"); // 大于等于
|
||||||
|
|
||||||
// 整形64位比较运算映射
|
// 整形64位比较运算映射
|
||||||
opcodeMap.put(IROpCode.CMP_LEQ, "LC_E"); // 相等
|
opcodeMap.put(IROpCode.CMP_LEQ, "LC_E"); // 相等
|
||||||
|
|||||||
@ -91,7 +91,7 @@ public record ExpressionBuilder(IRContext ctx) {
|
|||||||
// !x → (x == 0)
|
// !x → (x == 0)
|
||||||
if (op.equals("!")) {
|
if (op.equals("!")) {
|
||||||
IRVirtualRegister zero = InstructionFactory.loadConst(ctx, 0);
|
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);
|
throw new IllegalStateException("未知一元运算符: " + op);
|
||||||
|
|||||||
@ -223,7 +223,7 @@ public class StatementBuilder {
|
|||||||
} else {
|
} else {
|
||||||
IRVirtualRegister condReg = expr.build(cond);
|
IRVirtualRegister condReg = expr.build(cond);
|
||||||
IRVirtualRegister zero = InstructionFactory.loadConst(ctx, 0);
|
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位浮点取负
|
NEG_D64, // 64位浮点取负
|
||||||
|
|
||||||
/* ───── 逻辑与比较运算指令(32位整数:int) ───── */
|
/* ───── 逻辑与比较运算指令(32位整数:int) ───── */
|
||||||
CMP_EQ, // 32位相等比较:a == b
|
CMP_IEQ, // 32位相等比较:a == b
|
||||||
CMP_NE, // 32位不等比较:a != b
|
CMP_INE, // 32位不等比较:a != b
|
||||||
CMP_LT, // 32位小于比较:a < b
|
CMP_ILT, // 32位小于比较:a < b
|
||||||
CMP_GT, // 32位大于比较:a > b
|
CMP_IGT, // 32位大于比较:a > b
|
||||||
CMP_LE, // 32位小于等于:a <= b
|
CMP_ILE, // 32位小于等于:a <= b
|
||||||
CMP_GE, // 32位大于等于:a >= b
|
CMP_IGE, // 32位大于等于:a >= b
|
||||||
|
|
||||||
/* ───── 逻辑与比较运算指令(64位整数:long) ───── */
|
/* ───── 逻辑与比较运算指令(64位整数:long) ───── */
|
||||||
CMP_LEQ, // 64位相等比较:a == b
|
CMP_LEQ, // 64位相等比较:a == b
|
||||||
|
|||||||
@ -42,12 +42,12 @@ public final class IROpCodeMappings {
|
|||||||
/* ────── 比较运算符映射 ────── */
|
/* ────── 比较运算符映射 ────── */
|
||||||
/** 32-bit(int)比较 */
|
/** 32-bit(int)比较 */
|
||||||
public static final Map<String, IROpCode> CMP_I32 = Map.of(
|
public static final Map<String, IROpCode> CMP_I32 = Map.of(
|
||||||
"==", IROpCode.CMP_EQ,
|
"==", IROpCode.CMP_IEQ,
|
||||||
"!=", IROpCode.CMP_NE,
|
"!=", IROpCode.CMP_INE,
|
||||||
"<", IROpCode.CMP_LT,
|
"<", IROpCode.CMP_ILT,
|
||||||
">", IROpCode.CMP_GT,
|
">", IROpCode.CMP_IGT,
|
||||||
"<=", IROpCode.CMP_LE,
|
"<=", IROpCode.CMP_ILE,
|
||||||
">=", IROpCode.CMP_GE
|
">=", IROpCode.CMP_IGE
|
||||||
);
|
);
|
||||||
|
|
||||||
/** 64-bit(long)比较 */
|
/** 64-bit(long)比较 */
|
||||||
|
|||||||
@ -10,12 +10,12 @@ import java.util.Map;
|
|||||||
public class IROpCodeUtils {
|
public class IROpCodeUtils {
|
||||||
private static final Map<IROpCode, IROpCode> INVERT = Map.ofEntries(
|
private static final Map<IROpCode, IROpCode> INVERT = Map.ofEntries(
|
||||||
// 32-bit
|
// 32-bit
|
||||||
Map.entry(IROpCode.CMP_EQ, IROpCode.CMP_NE),
|
Map.entry(IROpCode.CMP_IEQ, IROpCode.CMP_INE),
|
||||||
Map.entry(IROpCode.CMP_NE, IROpCode.CMP_EQ),
|
Map.entry(IROpCode.CMP_INE, IROpCode.CMP_IEQ),
|
||||||
Map.entry(IROpCode.CMP_LT, IROpCode.CMP_GE),
|
Map.entry(IROpCode.CMP_ILT, IROpCode.CMP_IGE),
|
||||||
Map.entry(IROpCode.CMP_GE, IROpCode.CMP_LT),
|
Map.entry(IROpCode.CMP_IGE, IROpCode.CMP_ILT),
|
||||||
Map.entry(IROpCode.CMP_GT, IROpCode.CMP_LE),
|
Map.entry(IROpCode.CMP_IGT, IROpCode.CMP_ILE),
|
||||||
Map.entry(IROpCode.CMP_LE, IROpCode.CMP_GT),
|
Map.entry(IROpCode.CMP_ILE, IROpCode.CMP_IGT),
|
||||||
// 64-bit
|
// 64-bit
|
||||||
Map.entry(IROpCode.CMP_LEQ, IROpCode.CMP_LNE),
|
Map.entry(IROpCode.CMP_LEQ, IROpCode.CMP_LNE),
|
||||||
Map.entry(IROpCode.CMP_LNE, IROpCode.CMP_LEQ),
|
Map.entry(IROpCode.CMP_LNE, IROpCode.CMP_LEQ),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user