|
|
@@ -7,7 +7,7 @@ |
|
|
|
`make` should trigger a rebuild when it is modified; if not, use: |
|
|
|
`python scripts/update_asm_instructions.py`. |
|
|
|
|
|
|
|
@AUTOGEN_DATE Mon May 18 08:27:39 2015 UTC |
|
|
|
@AUTOGEN_DATE Mon May 18 08:39:52 2015 UTC |
|
|
|
*/ |
|
|
|
|
|
|
|
/* @AUTOGEN_INST_BLOCK_START */ |
|
|
@@ -193,6 +193,170 @@ INST_FUNC(and) |
|
|
|
INST_ERROR(ARG_TYPE) |
|
|
|
} |
|
|
|
|
|
|
|
INST_FUNC(bit) |
|
|
|
{ |
|
|
|
INST_TAKES_ARGS( |
|
|
|
AT_IMMEDIATE, |
|
|
|
AT_INDEXED|AT_INDIRECT|AT_REGISTER, |
|
|
|
AT_NONE |
|
|
|
) |
|
|
|
if (INST_NARGS == 2 && INST_TYPE(0) == AT_IMMEDIATE && INST_TYPE(1) == AT_REGISTER) { |
|
|
|
if ((INST_IMM(0).mask & IMM_BIT && !INST_IMM(0).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && INST_IMM(0).uval == 7) && INST_REG(1) == REG_L) |
|
|
|
INST_RETURN(2, 0xCB, 0x7D) |
|
|
|
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).is_label && INST_IMM(0).uval == 0)) |
|
|
|
INST_RETURN(2, 0xCB, 0x46) |
|
|
|
if ((INST_IMM(0).mask & IMM_BIT && !INST_IMM(0).is_label && INST_IMM(0).uval == 1)) |
|
|
|
INST_RETURN(2, 0xCB, 0x4E) |
|
|
|
if ((INST_IMM(0).mask & IMM_BIT && !INST_IMM(0).is_label && INST_IMM(0).uval == 2)) |
|
|
|
INST_RETURN(2, 0xCB, 0x56) |
|
|
|
if ((INST_IMM(0).mask & IMM_BIT && !INST_IMM(0).is_label && INST_IMM(0).uval == 3)) |
|
|
|
INST_RETURN(2, 0xCB, 0x5E) |
|
|
|
if ((INST_IMM(0).mask & IMM_BIT && !INST_IMM(0).is_label && INST_IMM(0).uval == 4)) |
|
|
|
INST_RETURN(2, 0xCB, 0x66) |
|
|
|
if ((INST_IMM(0).mask & IMM_BIT && !INST_IMM(0).is_label && INST_IMM(0).uval == 5)) |
|
|
|
INST_RETURN(2, 0xCB, 0x6E) |
|
|
|
if ((INST_IMM(0).mask & IMM_BIT && !INST_IMM(0).is_label && INST_IMM(0).uval == 6)) |
|
|
|
INST_RETURN(2, 0xCB, 0x76) |
|
|
|
if ((INST_IMM(0).mask & IMM_BIT && !INST_IMM(0).is_label && INST_IMM(0).uval == 7)) |
|
|
|
INST_RETURN(2, 0xCB, 0x7E) |
|
|
|
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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && 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).is_label && INST_IMM(0).uval == 7)) |
|
|
|
INST_RETURN(4, INST_INDEX_PREFIX(1), 0xCB, INST_INDEX(1).offset, 0x7E) |
|
|
|
INST_ERROR(ARG_VALUE) |
|
|
|
} |
|
|
|
INST_ERROR(ARG_TYPE) |
|
|
|
} |
|
|
|
|
|
|
|
INST_FUNC(ccf) |
|
|
|
{ |
|
|
|
INST_TAKES_NO_ARGS |
|
|
@@ -841,6 +1005,7 @@ static ASMInstParser lookup_parser(uint32_t key) |
|
|
|
HANDLE(adc) |
|
|
|
HANDLE(add) |
|
|
|
HANDLE(and) |
|
|
|
HANDLE(bit) |
|
|
|
HANDLE(ccf) |
|
|
|
HANDLE(cpd) |
|
|
|
HANDLE(cpdr) |
|
|
|