remove magic numbers

This commit is contained in:
Kevin Ramharak 2019-01-23 09:31:49 +01:00
parent 9aa876df62
commit b19eb0568d

View File

@ -25,38 +25,54 @@ import java.util.HashMap;
public class SetccInstruction extends Instruction { public class SetccInstruction extends Instruction {
public static final int OPCODE = 50; public static final int OPCODE = 50;
public static final int SETA = 0x01;
public static final int SETAE = 0x02;
public static final int SETBE = 0x03;
public static final int SETB = 0x04;
public static final int SETE = 0x05;
public static final int SETNE = 0x06;
public static final int SETG = 0x07;
public static final int SETGE = 0x08;
public static final int SETLE = 0x09;
public static final int SETL = 0x0A;
public static final int SETO = 0x0B;
public static final int SETNO = 0x0C;
public static final int SETS = 0x0D;
public static final int SETNS = 0x0E;
/** /**
* Map of mnemonics, stored in mnemonic : family op code * Map of mnemonics, stored in mnemonic : family op code
* This map includes aliases * This map includes aliases
*/ */
private static final Map<String, Character> mnemnoicFamilyOpCodeMap = new HashMap<>(26); private static final Map<String, Character> mnemnoicFamilyOpCodeMap = new HashMap<>(26);
static { static {
mnemnoicFamilyOpCodeMap.put("seta", (char) 0x01); mnemnoicFamilyOpCodeMap.put("seta", (char) SETA);
mnemnoicFamilyOpCodeMap.put("setnbe", (char) 0x01); mnemnoicFamilyOpCodeMap.put("setnbe", (char) SETA);
mnemnoicFamilyOpCodeMap.put("setae", (char) 0x02); mnemnoicFamilyOpCodeMap.put("setae", (char) SETAE);
mnemnoicFamilyOpCodeMap.put("setnb", (char) 0x02); mnemnoicFamilyOpCodeMap.put("setnb", (char) SETAE);
mnemnoicFamilyOpCodeMap.put("setnc", (char) 0x02); mnemnoicFamilyOpCodeMap.put("setnc", (char) SETAE);
mnemnoicFamilyOpCodeMap.put("setbe", (char) 0x03); mnemnoicFamilyOpCodeMap.put("setbe", (char) SETBE);
mnemnoicFamilyOpCodeMap.put("setna", (char) 0x03); mnemnoicFamilyOpCodeMap.put("setna", (char) SETBE);
mnemnoicFamilyOpCodeMap.put("setb", (char) 0x04); mnemnoicFamilyOpCodeMap.put("setb", (char) SETB);
mnemnoicFamilyOpCodeMap.put("setc", (char) 0x04); mnemnoicFamilyOpCodeMap.put("setc", (char) SETB);
mnemnoicFamilyOpCodeMap.put("setnae", (char) 0x04); mnemnoicFamilyOpCodeMap.put("setnae", (char) SETB);
mnemnoicFamilyOpCodeMap.put("sete", (char) 0x05); mnemnoicFamilyOpCodeMap.put("sete", (char) SETE);
mnemnoicFamilyOpCodeMap.put("setz", (char) 0x05); mnemnoicFamilyOpCodeMap.put("setz", (char) SETE);
mnemnoicFamilyOpCodeMap.put("setne", (char) 0x06); mnemnoicFamilyOpCodeMap.put("setne", (char) SETNE);
mnemnoicFamilyOpCodeMap.put("setnz", (char) 0x06); mnemnoicFamilyOpCodeMap.put("setnz", (char) SETNE);
mnemnoicFamilyOpCodeMap.put("setg", (char) 0x07); mnemnoicFamilyOpCodeMap.put("setg", (char) SETG);
mnemnoicFamilyOpCodeMap.put("setnle", (char) 0x07); mnemnoicFamilyOpCodeMap.put("setnle", (char) SETG);
mnemnoicFamilyOpCodeMap.put("setge", (char) 0x08); mnemnoicFamilyOpCodeMap.put("setge", (char) SETGE);
mnemnoicFamilyOpCodeMap.put("setnl", (char) 0x08); mnemnoicFamilyOpCodeMap.put("setnl", (char) SETGE);
mnemnoicFamilyOpCodeMap.put("setle", (char) 0x09); mnemnoicFamilyOpCodeMap.put("setle", (char) SETLE);
mnemnoicFamilyOpCodeMap.put("setng", (char) 0x09); mnemnoicFamilyOpCodeMap.put("setng", (char) SETLE);
mnemnoicFamilyOpCodeMap.put("setl", (char) 0x0A); mnemnoicFamilyOpCodeMap.put("setl", (char) SETL);
mnemnoicFamilyOpCodeMap.put("setnge", (char) 0x0A); mnemnoicFamilyOpCodeMap.put("setnge", (char) SETL);
mnemnoicFamilyOpCodeMap.put("seto", (char) 0x0B); mnemnoicFamilyOpCodeMap.put("seto", (char) SETO);
mnemnoicFamilyOpCodeMap.put("setno", (char) 0x0C); mnemnoicFamilyOpCodeMap.put("setno", (char) SETNO);
mnemnoicFamilyOpCodeMap.put("sets", (char) 0x0D); mnemnoicFamilyOpCodeMap.put("sets", (char) SETS);
mnemnoicFamilyOpCodeMap.put("setns", (char) 0x0E); mnemnoicFamilyOpCodeMap.put("setns", (char) SETNS);
} }
public SetccInstruction() { public SetccInstruction() {
@ -89,33 +105,33 @@ public class SetccInstruction extends Instruction {
*/ */
private static Status setcc(Target dst, int dstIndex, int familyOpCode, Status status) { private static Status setcc(Target dst, int dstIndex, int familyOpCode, Status status) {
switch (familyOpCode) { switch (familyOpCode) {
case 0x01: case SETA:
return seta(dst, dstIndex, status); return seta(dst, dstIndex, status);
case 0x02: case SETAE:
return setae(dst, dstIndex, status); return setae(dst, dstIndex, status);
case 0x03: case SETBE:
return setbe(dst, dstIndex, status); return setbe(dst, dstIndex, status);
case 0x04: case SETB:
return setb(dst, dstIndex, status); return setb(dst, dstIndex, status);
case 0x05: case SETE:
return sete(dst, dstIndex, status); return sete(dst, dstIndex, status);
case 0x06: case SETNE:
return setne(dst, dstIndex, status); return setne(dst, dstIndex, status);
case 0x07: case SETG:
return setg(dst, dstIndex, status); return setg(dst, dstIndex, status);
case 0x08: case SETGE:
return setge(dst, dstIndex, status); return setge(dst, dstIndex, status);
case 0x09: case SETLE:
return setle(dst, dstIndex, status); return setle(dst, dstIndex, status);
case 0x0A: case SETL:
return setl(dst, dstIndex, status); return setl(dst, dstIndex, status);
case 0x0B: case SETO:
return seto(dst, dstIndex, status); return seto(dst, dstIndex, status);
case 0x0C: case SETNO:
return setno(dst, dstIndex, status); return setno(dst, dstIndex, status);
case 0x0D: case SETS:
return sets(dst, dstIndex, status); return sets(dst, dstIndex, status);
case 0x0E: case SETNS:
return setns(dst, dstIndex, status); return setns(dst, dstIndex, status);
default: default:
return status; return status;