diff --git a/src/gbasm/gb_types.h b/src/gbasm/gb_types.h index 2d49811..1d2e807 100644 --- a/src/gbasm/gb_types.h +++ b/src/gbasm/gb_types.h @@ -18,13 +18,14 @@ enum gbasm_operand_type { }; enum gbasm_operand_r8_type { - GBASM_OPERAND_R8_A, - GBASM_OPERAND_R8_B, - GBASM_OPERAND_R8_C, - GBASM_OPERAND_R8_D, - GBASM_OPERAND_R8_E, - GBASM_OPERAND_R8_H, - GBASM_OPERAND_R8_L, + GBASM_OPERAND_R8_B = 0, + GBASM_OPERAND_R8_C = 1, + GBASM_OPERAND_R8_D = 2, + GBASM_OPERAND_R8_E = 3, + GBASM_OPERAND_R8_H = 4, + GBASM_OPERAND_R8_L = 5, + GBASM_OPERAND_R8_HL_DEREF = 6, + GBASM_OPERAND_R8_A = 7, }; struct gbasm_operand_r8 { @@ -36,7 +37,6 @@ enum gbasm_operand_r16_type { GBASM_OPERAND_R16_DE, GBASM_OPERAND_R16_HL, GBASM_OPERAND_R16_SP, - GBASM_OPERAND_R16_HL_DEREF, }; struct gbasm_operand_r16 { diff --git a/src/gbasm/opcodes.c b/src/gbasm/opcodes.c index f6bfdae..08c3132 100644 --- a/src/gbasm/opcodes.c +++ b/src/gbasm/opcodes.c @@ -89,6 +89,7 @@ size_t inc_emit(struct emitter *emitter, case GBASM_OPERAND_R8_E: opcode = 0x1c; break; case GBASM_OPERAND_R8_H: opcode = 0x24; break; case GBASM_OPERAND_R8_L: opcode = 0x2c; break; + case GBASM_OPERAND_R8_HL_DEREF: opcode = 0x34; break; } break; case GBASM_OPERAND_REG_16: @@ -97,7 +98,6 @@ size_t inc_emit(struct emitter *emitter, case GBASM_OPERAND_R16_DE: opcode = 0x13; break; case GBASM_OPERAND_R16_HL: opcode = 0x23; break; case GBASM_OPERAND_R16_SP: opcode = 0x33; break; - case GBASM_OPERAND_R16_HL_DEREF: opcode = 0x34; break; } break; default: @@ -124,6 +124,7 @@ size_t dec_emit(struct emitter *emitter, case GBASM_OPERAND_R8_E: opcode = 0x1d; break; case GBASM_OPERAND_R8_H: opcode = 0x25; break; case GBASM_OPERAND_R8_L: opcode = 0x2d; break; + case GBASM_OPERAND_R8_HL_DEREF: opcode = 0x35; break; } break; case GBASM_OPERAND_REG_16: @@ -132,7 +133,6 @@ size_t dec_emit(struct emitter *emitter, case GBASM_OPERAND_R16_DE: opcode = 0x1b; break; case GBASM_OPERAND_R16_HL: opcode = 0x2b; break; case GBASM_OPERAND_R16_SP: opcode = 0x3b; break; - case GBASM_OPERAND_R16_HL_DEREF: opcode = 0x35; break; } break; default: diff --git a/src/gbasm/operands.c b/src/gbasm/operands.c index 8725f99..1d5782c 100644 --- a/src/gbasm/operands.c +++ b/src/gbasm/operands.c @@ -69,6 +69,14 @@ static const struct gbasm_operand_info gbasm_operand_infos[] = { .r8 = { .type = GBASM_OPERAND_R8_L }, }, }, + { + .token = "(hl)", + .fixed = true, + .op_info = { + .type = GBASM_OPERAND_REG_8, + .r8 = { GBASM_OPERAND_R8_HL_DEREF }, + }, + }, { .token = "bc", .fixed = true, @@ -93,15 +101,6 @@ static const struct gbasm_operand_info gbasm_operand_infos[] = { .r16 = { GBASM_OPERAND_R16_HL }, }, }, - { - .token = "(hl)", - .fixed = true, - .op_info = { - .type = GBASM_OPERAND_REG_16, - .r16 = { GBASM_OPERAND_R16_HL_DEREF }, - }, - }, - { .token = "sp", .fixed = true,