Skip to content

Commit 8df6d39

Browse files
committed
Add single-operand sub, and, xor, or & cp, which are the canonical forms; but keep sub a, b etc for convenience
1 parent 71f39ec commit 8df6d39

File tree

2 files changed

+50
-40
lines changed

2 files changed

+50
-40
lines changed

Archs/Z80/Z80Opcodes.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,27 @@ const tZ80Opcode Z80Opcodes[] = {
4949
{ L"sub", 1, 0x90, Z80_PARAM_A, Z80_PARAM_REG8_MEMHL, -1, 0, 0 },
5050
{ L"sub", 2, 0xD6, Z80_PARAM_A, Z80_PARAM_IMMEDIATE, -1, -1, Z80_IMMEDIATE_U8 | Z80_ADD_SUB_IMMEDIATE },
5151
{ L"sub", 2, 0xE8, Z80_PARAM_SP, Z80_PARAM_IMMEDIATE, -1, -1, Z80_IMMEDIATE_S8 | Z80_NEGATE_IMM | Z80_GAMEBOY },
52+
{ L"sub", 1, 0x90, Z80_PARAM_REG8_MEMHL, Z80_PARAM_NONE, 0, -1, 0 },
53+
{ L"sub", 2, 0xD6, Z80_PARAM_IMMEDIATE, Z80_PARAM_NONE, -1, -1, Z80_IMMEDIATE_U8 | Z80_ADD_SUB_IMMEDIATE },
5254
{ L"sbc", 1, 0x98, Z80_PARAM_A, Z80_PARAM_REG8_MEMHL, -1, 0, 0 },
5355
{ L"sbc", 2, 0xDE, Z80_PARAM_A, Z80_PARAM_IMMEDIATE, -1, -1, Z80_IMMEDIATE_U8 | Z80_ADD_SUB_IMMEDIATE },
5456
{ L"sbc", 2, 0x42, Z80_PARAM_HL, Z80_PARAM_REG16_SP, -1, 4, Z80_Z80 | Z80_PREFIX_ED },
5557
{ L"and", 1, 0xA0, Z80_PARAM_A, Z80_PARAM_REG8_MEMHL, -1, 0, 0 },
5658
{ L"and", 2, 0xE6, Z80_PARAM_A, Z80_PARAM_IMMEDIATE, -1, -1, Z80_IMMEDIATE_U8 },
59+
{ L"and", 1, 0xA0, Z80_PARAM_REG8_MEMHL, Z80_PARAM_NONE, 0, -1, 0 },
60+
{ L"and", 2, 0xE6, Z80_PARAM_IMMEDIATE, Z80_PARAM_NONE, -1, -1, Z80_IMMEDIATE_U8 },
5761
{ L"xor", 1, 0xA8, Z80_PARAM_A, Z80_PARAM_REG8_MEMHL, -1, 0, 0 },
5862
{ L"xor", 2, 0xEE, Z80_PARAM_A, Z80_PARAM_IMMEDIATE, -1, -1, Z80_IMMEDIATE_U8 },
63+
{ L"xor", 1, 0xA8, Z80_PARAM_REG8_MEMHL, Z80_PARAM_NONE, 0, -1, 0 },
64+
{ L"xor", 2, 0xEE, Z80_PARAM_IMMEDIATE, Z80_PARAM_NONE, -1, -1, Z80_IMMEDIATE_U8 },
5965
{ L"or", 1, 0xB0, Z80_PARAM_A, Z80_PARAM_REG8_MEMHL, -1, 0, 0 },
6066
{ L"or", 2, 0xF6, Z80_PARAM_A, Z80_PARAM_IMMEDIATE, -1, -1, Z80_IMMEDIATE_U8 },
67+
{ L"or", 1, 0xB0, Z80_PARAM_REG8_MEMHL, Z80_PARAM_NONE, 0, -1, 0 },
68+
{ L"or", 2, 0xF6, Z80_PARAM_IMMEDIATE, Z80_PARAM_NONE, -1, -1, Z80_IMMEDIATE_U8 },
6169
{ L"cp", 1, 0xB8, Z80_PARAM_A, Z80_PARAM_REG8_MEMHL, -1, 0, 0 },
6270
{ L"cp", 2, 0xFE, Z80_PARAM_A, Z80_PARAM_IMMEDIATE, -1, -1, Z80_IMMEDIATE_U8 },
71+
{ L"cp", 1, 0xB8, Z80_PARAM_REG8_MEMHL, Z80_PARAM_NONE, 0, -1, 0 },
72+
{ L"cp", 2, 0xFE, Z80_PARAM_IMMEDIATE, Z80_PARAM_NONE, -1, -1, Z80_IMMEDIATE_U8 },
6373
{ L"inc", 1, 0x04, Z80_PARAM_REG8_MEMHL, Z80_PARAM_NONE, 3, -1, 0 },
6474
{ L"inc", 1, 0x03, Z80_PARAM_REG16_SP, Z80_PARAM_NONE, 4, -1, 0 },
6575
{ L"dec", 1, 0x05, Z80_PARAM_REG8_MEMHL, Z80_PARAM_NONE, 3, -1, 0 },

Tests/Z80/GB Opcodes/GB Opcodes.asm

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,14 @@
146146
adc a, l
147147
adc a, (hl)
148148
adc a, a
149-
sub a, b
150-
sub a, c
151-
sub a, d
152-
sub a, e
153-
sub a, h
154-
sub a, l
155-
sub a, (hl)
156-
sub a, a
149+
sub b
150+
sub c
151+
sub d
152+
sub e
153+
sub h
154+
sub l
155+
sub (hl)
156+
sub a
157157
sbc a, b
158158
sbc a, c
159159
sbc a, d
@@ -162,38 +162,38 @@
162162
sbc a, l
163163
sbc a, (hl)
164164
sbc a, a
165-
and a, b
166-
and a, c
167-
and a, d
168-
and a, e
169-
and a, h
170-
and a, l
171-
and a, (hl)
172-
and a, a
173-
xor a, b
174-
xor a, c
175-
xor a, d
176-
xor a, e
177-
xor a, h
178-
xor a, l
179-
xor a, (hl)
180-
xor a, a
181-
or a, b
182-
or a, c
183-
or a, d
184-
or a, e
185-
or a, h
186-
or a, l
187-
or a, (hl)
188-
or a, a
189-
cp a, b
190-
cp a, c
191-
cp a, d
192-
cp a, e
193-
cp a, h
194-
cp a, l
195-
cp a, (hl)
196-
cp a, a
165+
and b
166+
and c
167+
and d
168+
and e
169+
and h
170+
and l
171+
and (hl)
172+
and a
173+
xor b
174+
xor c
175+
xor d
176+
xor e
177+
xor h
178+
xor l
179+
xor (hl)
180+
xor a
181+
or b
182+
or c
183+
or d
184+
or e
185+
or h
186+
or l
187+
or (hl)
188+
or a
189+
cp b
190+
cp c
191+
cp d
192+
cp e
193+
cp h
194+
cp l
195+
cp (hl)
196+
cp a
197197
ret nz
198198
pop bc
199199
jp nz, 0x1234

0 commit comments

Comments
 (0)