diff --git a/scripts/update_asm_instructions.py b/scripts/update_asm_instructions.py index 94f9608..5ac2244 100755 --- a/scripts/update_asm_instructions.py +++ b/scripts/update_asm_instructions.py @@ -251,6 +251,11 @@ class Instruction(object): index = types.index("immediate") ret[i] = "INST_IMM({0}).sval - 2".format(index) + elif byte.startswith("bit(") and byte.endswith(")"): + index = types.index("immediate") + off = byte[4:-1] + ret[i] = "{0} + 8 * INST_IMM({1}).uval".format(off, index) + else: msg = "Unsupported return byte: {0}" raise RuntimeError(msg.format(byte)) diff --git a/src/assembler/instructions.inc.c b/src/assembler/instructions.inc.c index 9bbd8d8..5769fa9 100644 --- a/src/assembler/instructions.inc.c +++ b/src/assembler/instructions.inc.c @@ -7,7 +7,7 @@ `make` should trigger a rebuild when it is modified; if not, use: `python scripts/update_asm_instructions.py`. - @AUTOGEN_DATE Wed May 20 07:34:18 2015 UTC + @AUTOGEN_DATE Thu May 21 20:33:21 2015 UTC */ /* @AUTOGEN_INST_BLOCK_START */ @@ -201,157 +201,31 @@ INST_FUNC(bit) AT_NONE ) if (INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_REGISTER) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x47) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x40) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x41) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x42) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x43) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x44) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x45) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x4F) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x48) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x49) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x4A) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x4B) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x4C) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x4D) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x57) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x50) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x51) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x52) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x53) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x54) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x55) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x5F) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x58) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x59) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x5A) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x5B) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x5C) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x5D) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x67) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x60) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x61) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x62) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x63) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x64) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x65) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x6F) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x68) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x69) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x6A) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x6B) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x6C) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x6D) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x77) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x70) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x71) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x72) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x73) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x74) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x75) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x7F) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x78) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x79) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x7A) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x7B) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x7C) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x7D) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_A) + INST_RETURN(2, 0xCB, 0x47 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_B) + INST_RETURN(2, 0xCB, 0x40 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_C) + INST_RETURN(2, 0xCB, 0x41 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_D) + INST_RETURN(2, 0xCB, 0x42 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_E) + INST_RETURN(2, 0xCB, 0x43 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_H) + INST_RETURN(2, 0xCB, 0x44 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_L) + INST_RETURN(2, 0xCB, 0x45 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } if (INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_INDIRECT && (INST_INDIRECT(1).type == AT_REGISTER && INST_INDIRECT(1).addr.reg == REG_HL)) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0)) - INST_RETURN(2, 0xCB, 0x46) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1)) - INST_RETURN(2, 0xCB, 0x4E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2)) - INST_RETURN(2, 0xCB, 0x56) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3)) - INST_RETURN(2, 0xCB, 0x5E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4)) - INST_RETURN(2, 0xCB, 0x66) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5)) - INST_RETURN(2, 0xCB, 0x6E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6)) - INST_RETURN(2, 0xCB, 0x76) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7)) - INST_RETURN(2, 0xCB, 0x7E) + if (INST_IMM(0).mask & IMM_BIT) + INST_RETURN(2, 0xCB, 0x46 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } if (INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_INDEXED) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x46) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x4E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x56) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x5E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x66) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x6E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x76) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x7E) + if (INST_IMM(0).mask & IMM_BIT) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x46 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } INST_ERROR(ARG_TYPE) @@ -1381,272 +1255,48 @@ INST_FUNC(res) AT_OPTIONAL|AT_REGISTER ) if (INST_NARGS == 2 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_REGISTER) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x87) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x80) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x81) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x82) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x83) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x84) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x85) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x8F) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x88) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x89) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x8A) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x8B) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x8C) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x8D) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x97) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x90) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x91) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x92) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x93) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x94) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x95) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0x9F) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0x98) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0x99) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0x9A) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0x9B) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0x9C) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0x9D) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xA7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xA0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xA1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xA2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xA3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xA4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xA5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xAF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xA8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xA9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xAA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xAB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xAC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xAD) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xB7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xB0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xB1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xB2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xB3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xB4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xB5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xBF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xB8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xB9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xBA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xBB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xBC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xBD) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_A) + INST_RETURN(2, 0xCB, 0x87 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_B) + INST_RETURN(2, 0xCB, 0x80 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_C) + INST_RETURN(2, 0xCB, 0x81 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_D) + INST_RETURN(2, 0xCB, 0x82 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_E) + INST_RETURN(2, 0xCB, 0x83 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_H) + INST_RETURN(2, 0xCB, 0x84 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_L) + INST_RETURN(2, 0xCB, 0x85 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } if (INST_NARGS == 2 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_INDIRECT && (INST_INDIRECT(1).type == AT_REGISTER && INST_INDIRECT(1).addr.reg == REG_HL)) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0)) - INST_RETURN(2, 0xCB, 0x86) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1)) - INST_RETURN(2, 0xCB, 0x8E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2)) - INST_RETURN(2, 0xCB, 0x96) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3)) - INST_RETURN(2, 0xCB, 0x9E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4)) - INST_RETURN(2, 0xCB, 0xA6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5)) - INST_RETURN(2, 0xCB, 0xAE) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6)) - INST_RETURN(2, 0xCB, 0xB6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7)) - INST_RETURN(2, 0xCB, 0xBE) + if (INST_IMM(0).mask & IMM_BIT) + INST_RETURN(2, 0xCB, 0x86 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } if (INST_NARGS == 2 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_INDEXED) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x86) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x8E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x96) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x9E) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xAE) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xBE) + if (INST_IMM(0).mask & IMM_BIT) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x86 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } if (INST_NARGS == 3 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_INDEXED && INST_TYPE(2) == AT_REGISTER) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x87) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x80) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x81) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x82) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x83) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x84) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x85) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x8F) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x88) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x89) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x8A) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x8B) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x8C) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x8D) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x97) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x90) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x91) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x92) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x93) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x94) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x95) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x9F) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x98) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x99) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x9A) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x9B) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x9C) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x9D) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xAF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xA9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xAA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xAB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xAC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xAD) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xBF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xB9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xBA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xBB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xBC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xBD) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_A) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x87 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_B) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x80 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_C) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x81 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_D) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x82 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_E) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x83 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_H) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x84 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_L) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x85 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } INST_ERROR(ARG_TYPE) @@ -2038,272 +1688,48 @@ INST_FUNC(set) AT_OPTIONAL|AT_REGISTER ) if (INST_NARGS == 2 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_REGISTER) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xC7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xC0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xC1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xC2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xC3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xC4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xC5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xCF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xC8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xC9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xCA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xCB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xCC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xCD) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xD7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xD0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xD1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xD2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xD3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xD4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xD5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xDF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xD8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xD9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xDA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xDB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xDC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xDD) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xE7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xE0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xE1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xE2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xE3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xE4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xE5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xEF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xE8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xE9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xEA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xEB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xEC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xED) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xF7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xF0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xF1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xF2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xF3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xF4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xF5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_A) - INST_RETURN(2, 0xCB, 0xFF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_B) - INST_RETURN(2, 0xCB, 0xF8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_C) - INST_RETURN(2, 0xCB, 0xF9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_D) - INST_RETURN(2, 0xCB, 0xFA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_E) - INST_RETURN(2, 0xCB, 0xFB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_H) - INST_RETURN(2, 0xCB, 0xFC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(1) == REG_L) - INST_RETURN(2, 0xCB, 0xFD) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_A) + INST_RETURN(2, 0xCB, 0xC7 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_B) + INST_RETURN(2, 0xCB, 0xC0 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_C) + INST_RETURN(2, 0xCB, 0xC1 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_D) + INST_RETURN(2, 0xCB, 0xC2 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_E) + INST_RETURN(2, 0xCB, 0xC3 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_H) + INST_RETURN(2, 0xCB, 0xC4 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(1) == REG_L) + INST_RETURN(2, 0xCB, 0xC5 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } if (INST_NARGS == 2 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_INDIRECT && (INST_INDIRECT(1).type == AT_REGISTER && INST_INDIRECT(1).addr.reg == REG_HL)) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0)) - INST_RETURN(2, 0xCB, 0xC6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1)) - INST_RETURN(2, 0xCB, 0xCE) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2)) - INST_RETURN(2, 0xCB, 0xD6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3)) - INST_RETURN(2, 0xCB, 0xDE) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4)) - INST_RETURN(2, 0xCB, 0xE6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5)) - INST_RETURN(2, 0xCB, 0xEE) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6)) - INST_RETURN(2, 0xCB, 0xF6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7)) - INST_RETURN(2, 0xCB, 0xFE) + if (INST_IMM(0).mask & IMM_BIT) + INST_RETURN(2, 0xCB, 0xC6 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } if (INST_NARGS == 2 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_INDEXED) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xCE) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xDE) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xEE) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF6) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7)) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xFE) + if (INST_IMM(0).mask & IMM_BIT) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC6 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } if (INST_NARGS == 3 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_INDEXED && INST_TYPE(2) == AT_REGISTER) { - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 0) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xCF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xCA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xCB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xCC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 1) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xCD) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 2) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xDF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xD9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xDA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xDB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xDC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 3) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xDD) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 4) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xEF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xE9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xEA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xEB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xEC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 5) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xED) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF7) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF0) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF1) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF2) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF3) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF4) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 6) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF5) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_A) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xFF) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_B) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF8) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_C) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xF9) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_D) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xFA) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_E) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xFB) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_H) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xFC) - if ((INST_IMM(0).mask & IMM_BIT && INST_IMM(0).uval == 7) && INST_REG(2) == REG_L) - INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xFD) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_A) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC7 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_B) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC0 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_C) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC1 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_D) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC2 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_E) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC3 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_H) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC4 + 8 * INST_IMM(0).uval) + if (INST_IMM(0).mask & IMM_BIT && INST_REG(2) == REG_L) + INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0xC5 + 8 * INST_IMM(0).uval) INST_ERROR(ARG_VALUE) } INST_ERROR(ARG_TYPE) diff --git a/src/assembler/instructions.yml b/src/assembler/instructions.yml index 3acea68..a324c3e 100644 --- a/src/assembler/instructions.yml +++ b/src/assembler/instructions.yml @@ -115,136 +115,24 @@ bit: cases: - type: [immediate, register] cases: - - cond: [bit.0, a] - return: [0xCB, 0x47] - - cond: [bit.0, b] - return: [0xCB, 0x40] - - cond: [bit.0, c] - return: [0xCB, 0x41] - - cond: [bit.0, d] - return: [0xCB, 0x42] - - cond: [bit.0, e] - return: [0xCB, 0x43] - - cond: [bit.0, h] - return: [0xCB, 0x44] - - cond: [bit.0, l] - return: [0xCB, 0x45] - - cond: [bit.1, a] - return: [0xCB, 0x4F] - - cond: [bit.1, b] - return: [0xCB, 0x48] - - cond: [bit.1, c] - return: [0xCB, 0x49] - - cond: [bit.1, d] - return: [0xCB, 0x4A] - - cond: [bit.1, e] - return: [0xCB, 0x4B] - - cond: [bit.1, h] - return: [0xCB, 0x4C] - - cond: [bit.1, l] - return: [0xCB, 0x4D] - - cond: [bit.2, a] - return: [0xCB, 0x57] - - cond: [bit.2, b] - return: [0xCB, 0x50] - - cond: [bit.2, c] - return: [0xCB, 0x51] - - cond: [bit.2, d] - return: [0xCB, 0x52] - - cond: [bit.2, e] - return: [0xCB, 0x53] - - cond: [bit.2, h] - return: [0xCB, 0x54] - - cond: [bit.2, l] - return: [0xCB, 0x55] - - cond: [bit.3, a] - return: [0xCB, 0x5F] - - cond: [bit.3, b] - return: [0xCB, 0x58] - - cond: [bit.3, c] - return: [0xCB, 0x59] - - cond: [bit.3, d] - return: [0xCB, 0x5A] - - cond: [bit.3, e] - return: [0xCB, 0x5B] - - cond: [bit.3, h] - return: [0xCB, 0x5C] - - cond: [bit.3, l] - return: [0xCB, 0x5D] - - cond: [bit.4, a] - return: [0xCB, 0x67] - - cond: [bit.4, b] - return: [0xCB, 0x60] - - cond: [bit.4, c] - return: [0xCB, 0x61] - - cond: [bit.4, d] - return: [0xCB, 0x62] - - cond: [bit.4, e] - return: [0xCB, 0x63] - - cond: [bit.4, h] - return: [0xCB, 0x64] - - cond: [bit.4, l] - return: [0xCB, 0x65] - - cond: [bit.5, a] - return: [0xCB, 0x6F] - - cond: [bit.5, b] - return: [0xCB, 0x68] - - cond: [bit.5, c] - return: [0xCB, 0x69] - - cond: [bit.5, d] - return: [0xCB, 0x6A] - - cond: [bit.5, e] - return: [0xCB, 0x6B] - - cond: [bit.5, h] - return: [0xCB, 0x6C] - - cond: [bit.5, l] - return: [0xCB, 0x6D] - - cond: [bit.6, a] - return: [0xCB, 0x77] - - cond: [bit.6, b] - return: [0xCB, 0x70] - - cond: [bit.6, c] - return: [0xCB, 0x71] - - cond: [bit.6, d] - return: [0xCB, 0x72] - - cond: [bit.6, e] - return: [0xCB, 0x73] - - cond: [bit.6, h] - return: [0xCB, 0x74] - - cond: [bit.6, l] - return: [0xCB, 0x75] - - cond: [bit.7, a] - return: [0xCB, 0x7F] - - cond: [bit.7, b] - return: [0xCB, 0x78] - - cond: [bit.7, c] - return: [0xCB, 0x79] - - cond: [bit.7, d] - return: [0xCB, 0x7A] - - cond: [bit.7, e] - return: [0xCB, 0x7B] - - cond: [bit.7, h] - return: [0xCB, 0x7C] - - cond: [bit.7, l] - return: [0xCB, 0x7D] + - cond: [bit, a] + return: [0xCB, bit(0x47)] + - cond: [bit, b] + return: [0xCB, bit(0x40)] + - cond: [bit, c] + return: [0xCB, bit(0x41)] + - cond: [bit, d] + return: [0xCB, bit(0x42)] + - cond: [bit, e] + return: [0xCB, bit(0x43)] + - cond: [bit, h] + return: [0xCB, bit(0x44)] + - cond: [bit, l] + return: [0xCB, bit(0x45)] - type: [immediate, indirect_hl_or_indexed] cases: - - cond: [bit.0, _] - return: [0xCB, 0x46] - - cond: [bit.1, _] - return: [0xCB, 0x4E] - - cond: [bit.2, _] - return: [0xCB, 0x56] - - cond: [bit.3, _] - return: [0xCB, 0x5E] - - cond: [bit.4, _] - return: [0xCB, 0x66] - - cond: [bit.5, _] - return: [0xCB, 0x6E] - - cond: [bit.6, _] - return: [0xCB, 0x76] - - cond: [bit.7, _] - return: [0xCB, 0x7E] + - cond: [bit, _] + return: [0xCB, bit(0x46)] call: args: yes @@ -865,250 +753,40 @@ res: cases: - type: [immediate, register] cases: - - cond: [bit.0, a] - return: [0xCB, 0x87] - - cond: [bit.0, b] - return: [0xCB, 0x80] - - cond: [bit.0, c] - return: [0xCB, 0x81] - - cond: [bit.0, d] - return: [0xCB, 0x82] - - cond: [bit.0, e] - return: [0xCB, 0x83] - - cond: [bit.0, h] - return: [0xCB, 0x84] - - cond: [bit.0, l] - return: [0xCB, 0x85] - - cond: [bit.1, a] - return: [0xCB, 0x8F] - - cond: [bit.1, b] - return: [0xCB, 0x88] - - cond: [bit.1, c] - return: [0xCB, 0x89] - - cond: [bit.1, d] - return: [0xCB, 0x8A] - - cond: [bit.1, e] - return: [0xCB, 0x8B] - - cond: [bit.1, h] - return: [0xCB, 0x8C] - - cond: [bit.1, l] - return: [0xCB, 0x8D] - - cond: [bit.2, a] - return: [0xCB, 0x97] - - cond: [bit.2, b] - return: [0xCB, 0x90] - - cond: [bit.2, c] - return: [0xCB, 0x91] - - cond: [bit.2, d] - return: [0xCB, 0x92] - - cond: [bit.2, e] - return: [0xCB, 0x93] - - cond: [bit.2, h] - return: [0xCB, 0x94] - - cond: [bit.2, l] - return: [0xCB, 0x95] - - cond: [bit.3, a] - return: [0xCB, 0x9F] - - cond: [bit.3, b] - return: [0xCB, 0x98] - - cond: [bit.3, c] - return: [0xCB, 0x99] - - cond: [bit.3, d] - return: [0xCB, 0x9A] - - cond: [bit.3, e] - return: [0xCB, 0x9B] - - cond: [bit.3, h] - return: [0xCB, 0x9C] - - cond: [bit.3, l] - return: [0xCB, 0x9D] - - cond: [bit.4, a] - return: [0xCB, 0xA7] - - cond: [bit.4, b] - return: [0xCB, 0xA0] - - cond: [bit.4, c] - return: [0xCB, 0xA1] - - cond: [bit.4, d] - return: [0xCB, 0xA2] - - cond: [bit.4, e] - return: [0xCB, 0xA3] - - cond: [bit.4, h] - return: [0xCB, 0xA4] - - cond: [bit.4, l] - return: [0xCB, 0xA5] - - cond: [bit.5, a] - return: [0xCB, 0xAF] - - cond: [bit.5, b] - return: [0xCB, 0xA8] - - cond: [bit.5, c] - return: [0xCB, 0xA9] - - cond: [bit.5, d] - return: [0xCB, 0xAA] - - cond: [bit.5, e] - return: [0xCB, 0xAB] - - cond: [bit.5, h] - return: [0xCB, 0xAC] - - cond: [bit.5, l] - return: [0xCB, 0xAD] - - cond: [bit.6, a] - return: [0xCB, 0xB7] - - cond: [bit.6, b] - return: [0xCB, 0xB0] - - cond: [bit.6, c] - return: [0xCB, 0xB1] - - cond: [bit.6, d] - return: [0xCB, 0xB2] - - cond: [bit.6, e] - return: [0xCB, 0xB3] - - cond: [bit.6, h] - return: [0xCB, 0xB4] - - cond: [bit.6, l] - return: [0xCB, 0xB5] - - cond: [bit.7, a] - return: [0xCB, 0xBF] - - cond: [bit.7, b] - return: [0xCB, 0xB8] - - cond: [bit.7, c] - return: [0xCB, 0xB9] - - cond: [bit.7, d] - return: [0xCB, 0xBA] - - cond: [bit.7, e] - return: [0xCB, 0xBB] - - cond: [bit.7, h] - return: [0xCB, 0xBC] - - cond: [bit.7, l] - return: [0xCB, 0xBD] + - cond: [bit, a] + return: [0xCB, bit(0x87)] + - cond: [bit, b] + return: [0xCB, bit(0x80)] + - cond: [bit, c] + return: [0xCB, bit(0x81)] + - cond: [bit, d] + return: [0xCB, bit(0x82)] + - cond: [bit, e] + return: [0xCB, bit(0x83)] + - cond: [bit, h] + return: [0xCB, bit(0x84)] + - cond: [bit, l] + return: [0xCB, bit(0x85)] - type: [immediate, indirect_hl_or_indexed] cases: - - cond: [bit.0, _] - return: [0xCB, 0x86] - - cond: [bit.1, _] - return: [0xCB, 0x8E] - - cond: [bit.2, _] - return: [0xCB, 0x96] - - cond: [bit.3, _] - return: [0xCB, 0x9E] - - cond: [bit.4, _] - return: [0xCB, 0xA6] - - cond: [bit.5, _] - return: [0xCB, 0xAE] - - cond: [bit.6, _] - return: [0xCB, 0xB6] - - cond: [bit.7, _] - return: [0xCB, 0xBE] + - cond: [bit, _] + return: [0xCB, bit(0x86)] - type: [immediate, indexed, register] cases: - - cond: [bit.0, _, a] - return: [0xCB, 0x87] - - cond: [bit.0, _, b] - return: [0xCB, 0x80] - - cond: [bit.0, _, c] - return: [0xCB, 0x81] - - cond: [bit.0, _, d] - return: [0xCB, 0x82] - - cond: [bit.0, _, e] - return: [0xCB, 0x83] - - cond: [bit.0, _, h] - return: [0xCB, 0x84] - - cond: [bit.0, _, l] - return: [0xCB, 0x85] - - cond: [bit.1, _, a] - return: [0xCB, 0x8F] - - cond: [bit.1, _, b] - return: [0xCB, 0x88] - - cond: [bit.1, _, c] - return: [0xCB, 0x89] - - cond: [bit.1, _, d] - return: [0xCB, 0x8A] - - cond: [bit.1, _, e] - return: [0xCB, 0x8B] - - cond: [bit.1, _, h] - return: [0xCB, 0x8C] - - cond: [bit.1, _, l] - return: [0xCB, 0x8D] - - cond: [bit.2, _, a] - return: [0xCB, 0x97] - - cond: [bit.2, _, b] - return: [0xCB, 0x90] - - cond: [bit.2, _, c] - return: [0xCB, 0x91] - - cond: [bit.2, _, d] - return: [0xCB, 0x92] - - cond: [bit.2, _, e] - return: [0xCB, 0x93] - - cond: [bit.2, _, h] - return: [0xCB, 0x94] - - cond: [bit.2, _, l] - return: [0xCB, 0x95] - - cond: [bit.3, _, a] - return: [0xCB, 0x9F] - - cond: [bit.3, _, b] - return: [0xCB, 0x98] - - cond: [bit.3, _, c] - return: [0xCB, 0x99] - - cond: [bit.3, _, d] - return: [0xCB, 0x9A] - - cond: [bit.3, _, e] - return: [0xCB, 0x9B] - - cond: [bit.3, _, h] - return: [0xCB, 0x9C] - - cond: [bit.3, _, l] - return: [0xCB, 0x9D] - - cond: [bit.4, _, a] - return: [0xCB, 0xA7] - - cond: [bit.4, _, b] - return: [0xCB, 0xA0] - - cond: [bit.4, _, c] - return: [0xCB, 0xA1] - - cond: [bit.4, _, d] - return: [0xCB, 0xA2] - - cond: [bit.4, _, e] - return: [0xCB, 0xA3] - - cond: [bit.4, _, h] - return: [0xCB, 0xA4] - - cond: [bit.4, _, l] - return: [0xCB, 0xA5] - - cond: [bit.5, _, a] - return: [0xCB, 0xAF] - - cond: [bit.5, _, b] - return: [0xCB, 0xA8] - - cond: [bit.5, _, c] - return: [0xCB, 0xA9] - - cond: [bit.5, _, d] - return: [0xCB, 0xAA] - - cond: [bit.5, _, e] - return: [0xCB, 0xAB] - - cond: [bit.5, _, h] - return: [0xCB, 0xAC] - - cond: [bit.5, _, l] - return: [0xCB, 0xAD] - - cond: [bit.6, _, a] - return: [0xCB, 0xB7] - - cond: [bit.6, _, b] - return: [0xCB, 0xB0] - - cond: [bit.6, _, c] - return: [0xCB, 0xB1] - - cond: [bit.6, _, d] - return: [0xCB, 0xB2] - - cond: [bit.6, _, e] - return: [0xCB, 0xB3] - - cond: [bit.6, _, h] - return: [0xCB, 0xB4] - - cond: [bit.6, _, l] - return: [0xCB, 0xB5] - - cond: [bit.7, _, a] - return: [0xCB, 0xBF] - - cond: [bit.7, _, b] - return: [0xCB, 0xB8] - - cond: [bit.7, _, c] - return: [0xCB, 0xB9] - - cond: [bit.7, _, d] - return: [0xCB, 0xBA] - - cond: [bit.7, _, e] - return: [0xCB, 0xBB] - - cond: [bit.7, _, h] - return: [0xCB, 0xBC] - - cond: [bit.7, _, l] - return: [0xCB, 0xBD] + - cond: [bit, _, a] + return: [0xCB, bit(0x87)] + - cond: [bit, _, b] + return: [0xCB, bit(0x80)] + - cond: [bit, _, c] + return: [0xCB, bit(0x81)] + - cond: [bit, _, d] + return: [0xCB, bit(0x82)] + - cond: [bit, _, e] + return: [0xCB, bit(0x83)] + - cond: [bit, _, h] + return: [0xCB, bit(0x84)] + - cond: [bit, _, l] + return: [0xCB, bit(0x85)] ret: args: yes @@ -1393,250 +1071,40 @@ set: cases: - type: [immediate, register] cases: - - cond: [bit.0, a] - return: [0xCB, 0xC7] - - cond: [bit.0, b] - return: [0xCB, 0xC0] - - cond: [bit.0, c] - return: [0xCB, 0xC1] - - cond: [bit.0, d] - return: [0xCB, 0xC2] - - cond: [bit.0, e] - return: [0xCB, 0xC3] - - cond: [bit.0, h] - return: [0xCB, 0xC4] - - cond: [bit.0, l] - return: [0xCB, 0xC5] - - cond: [bit.1, a] - return: [0xCB, 0xCF] - - cond: [bit.1, b] - return: [0xCB, 0xC8] - - cond: [bit.1, c] - return: [0xCB, 0xC9] - - cond: [bit.1, d] - return: [0xCB, 0xCA] - - cond: [bit.1, e] - return: [0xCB, 0xCB] - - cond: [bit.1, h] - return: [0xCB, 0xCC] - - cond: [bit.1, l] - return: [0xCB, 0xCD] - - cond: [bit.2, a] - return: [0xCB, 0xD7] - - cond: [bit.2, b] - return: [0xCB, 0xD0] - - cond: [bit.2, c] - return: [0xCB, 0xD1] - - cond: [bit.2, d] - return: [0xCB, 0xD2] - - cond: [bit.2, e] - return: [0xCB, 0xD3] - - cond: [bit.2, h] - return: [0xCB, 0xD4] - - cond: [bit.2, l] - return: [0xCB, 0xD5] - - cond: [bit.3, a] - return: [0xCB, 0xDF] - - cond: [bit.3, b] - return: [0xCB, 0xD8] - - cond: [bit.3, c] - return: [0xCB, 0xD9] - - cond: [bit.3, d] - return: [0xCB, 0xDA] - - cond: [bit.3, e] - return: [0xCB, 0xDB] - - cond: [bit.3, h] - return: [0xCB, 0xDC] - - cond: [bit.3, l] - return: [0xCB, 0xDD] - - cond: [bit.4, a] - return: [0xCB, 0xE7] - - cond: [bit.4, b] - return: [0xCB, 0xE0] - - cond: [bit.4, c] - return: [0xCB, 0xE1] - - cond: [bit.4, d] - return: [0xCB, 0xE2] - - cond: [bit.4, e] - return: [0xCB, 0xE3] - - cond: [bit.4, h] - return: [0xCB, 0xE4] - - cond: [bit.4, l] - return: [0xCB, 0xE5] - - cond: [bit.5, a] - return: [0xCB, 0xEF] - - cond: [bit.5, b] - return: [0xCB, 0xE8] - - cond: [bit.5, c] - return: [0xCB, 0xE9] - - cond: [bit.5, d] - return: [0xCB, 0xEA] - - cond: [bit.5, e] - return: [0xCB, 0xEB] - - cond: [bit.5, h] - return: [0xCB, 0xEC] - - cond: [bit.5, l] - return: [0xCB, 0xED] - - cond: [bit.6, a] - return: [0xCB, 0xF7] - - cond: [bit.6, b] - return: [0xCB, 0xF0] - - cond: [bit.6, c] - return: [0xCB, 0xF1] - - cond: [bit.6, d] - return: [0xCB, 0xF2] - - cond: [bit.6, e] - return: [0xCB, 0xF3] - - cond: [bit.6, h] - return: [0xCB, 0xF4] - - cond: [bit.6, l] - return: [0xCB, 0xF5] - - cond: [bit.7, a] - return: [0xCB, 0xFF] - - cond: [bit.7, b] - return: [0xCB, 0xF8] - - cond: [bit.7, c] - return: [0xCB, 0xF9] - - cond: [bit.7, d] - return: [0xCB, 0xFA] - - cond: [bit.7, e] - return: [0xCB, 0xFB] - - cond: [bit.7, h] - return: [0xCB, 0xFC] - - cond: [bit.7, l] - return: [0xCB, 0xFD] + - cond: [bit, a] + return: [0xCB, bit(0xC7)] + - cond: [bit, b] + return: [0xCB, bit(0xC0)] + - cond: [bit, c] + return: [0xCB, bit(0xC1)] + - cond: [bit, d] + return: [0xCB, bit(0xC2)] + - cond: [bit, e] + return: [0xCB, bit(0xC3)] + - cond: [bit, h] + return: [0xCB, bit(0xC4)] + - cond: [bit, l] + return: [0xCB, bit(0xC5)] - type: [immediate, indirect_hl_or_indexed] cases: - - cond: [bit.0, _] - return: [0xCB, 0xC6] - - cond: [bit.1, _] - return: [0xCB, 0xCE] - - cond: [bit.2, _] - return: [0xCB, 0xD6] - - cond: [bit.3, _] - return: [0xCB, 0xDE] - - cond: [bit.4, _] - return: [0xCB, 0xE6] - - cond: [bit.5, _] - return: [0xCB, 0xEE] - - cond: [bit.6, _] - return: [0xCB, 0xF6] - - cond: [bit.7, _] - return: [0xCB, 0xFE] + - cond: [bit, _] + return: [0xCB, bit(0xC6)] - type: [immediate, indexed, register] cases: - - cond: [bit.0, _, a] - return: [0xCB, 0xC7] - - cond: [bit.0, _, b] - return: [0xCB, 0xC0] - - cond: [bit.0, _, c] - return: [0xCB, 0xC1] - - cond: [bit.0, _, d] - return: [0xCB, 0xC2] - - cond: [bit.0, _, e] - return: [0xCB, 0xC3] - - cond: [bit.0, _, h] - return: [0xCB, 0xC4] - - cond: [bit.0, _, l] - return: [0xCB, 0xC5] - - cond: [bit.1, _, a] - return: [0xCB, 0xCF] - - cond: [bit.1, _, b] - return: [0xCB, 0xC8] - - cond: [bit.1, _, c] - return: [0xCB, 0xC9] - - cond: [bit.1, _, d] - return: [0xCB, 0xCA] - - cond: [bit.1, _, e] - return: [0xCB, 0xCB] - - cond: [bit.1, _, h] - return: [0xCB, 0xCC] - - cond: [bit.1, _, l] - return: [0xCB, 0xCD] - - cond: [bit.2, _, a] - return: [0xCB, 0xD7] - - cond: [bit.2, _, b] - return: [0xCB, 0xD0] - - cond: [bit.2, _, c] - return: [0xCB, 0xD1] - - cond: [bit.2, _, d] - return: [0xCB, 0xD2] - - cond: [bit.2, _, e] - return: [0xCB, 0xD3] - - cond: [bit.2, _, h] - return: [0xCB, 0xD4] - - cond: [bit.2, _, l] - return: [0xCB, 0xD5] - - cond: [bit.3, _, a] - return: [0xCB, 0xDF] - - cond: [bit.3, _, b] - return: [0xCB, 0xD8] - - cond: [bit.3, _, c] - return: [0xCB, 0xD9] - - cond: [bit.3, _, d] - return: [0xCB, 0xDA] - - cond: [bit.3, _, e] - return: [0xCB, 0xDB] - - cond: [bit.3, _, h] - return: [0xCB, 0xDC] - - cond: [bit.3, _, l] - return: [0xCB, 0xDD] - - cond: [bit.4, _, a] - return: [0xCB, 0xE7] - - cond: [bit.4, _, b] - return: [0xCB, 0xE0] - - cond: [bit.4, _, c] - return: [0xCB, 0xE1] - - cond: [bit.4, _, d] - return: [0xCB, 0xE2] - - cond: [bit.4, _, e] - return: [0xCB, 0xE3] - - cond: [bit.4, _, h] - return: [0xCB, 0xE4] - - cond: [bit.4, _, l] - return: [0xCB, 0xE5] - - cond: [bit.5, _, a] - return: [0xCB, 0xEF] - - cond: [bit.5, _, b] - return: [0xCB, 0xE8] - - cond: [bit.5, _, c] - return: [0xCB, 0xE9] - - cond: [bit.5, _, d] - return: [0xCB, 0xEA] - - cond: [bit.5, _, e] - return: [0xCB, 0xEB] - - cond: [bit.5, _, h] - return: [0xCB, 0xEC] - - cond: [bit.5, _, l] - return: [0xCB, 0xED] - - cond: [bit.6, _, a] - return: [0xCB, 0xF7] - - cond: [bit.6, _, b] - return: [0xCB, 0xF0] - - cond: [bit.6, _, c] - return: [0xCB, 0xF1] - - cond: [bit.6, _, d] - return: [0xCB, 0xF2] - - cond: [bit.6, _, e] - return: [0xCB, 0xF3] - - cond: [bit.6, _, h] - return: [0xCB, 0xF4] - - cond: [bit.6, _, l] - return: [0xCB, 0xF5] - - cond: [bit.7, _, a] - return: [0xCB, 0xFF] - - cond: [bit.7, _, b] - return: [0xCB, 0xF8] - - cond: [bit.7, _, c] - return: [0xCB, 0xF9] - - cond: [bit.7, _, d] - return: [0xCB, 0xFA] - - cond: [bit.7, _, e] - return: [0xCB, 0xFB] - - cond: [bit.7, _, h] - return: [0xCB, 0xFC] - - cond: [bit.7, _, l] - return: [0xCB, 0xFD] + - cond: [bit, _, a] + return: [0xCB, bit(0xC7)] + - cond: [bit, _, b] + return: [0xCB, bit(0xC0)] + - cond: [bit, _, c] + return: [0xCB, bit(0xC1)] + - cond: [bit, _, d] + return: [0xCB, bit(0xC2)] + - cond: [bit, _, e] + return: [0xCB, bit(0xC3)] + - cond: [bit, _, h] + return: [0xCB, bit(0xC4)] + - cond: [bit, _, l] + return: [0xCB, bit(0xC5)] sl1: &sl1 args: yes