Skip to content

Commit c8b58ff

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 c8b58ff

File tree

2 files changed

+55
-45
lines changed

2 files changed

+55
-45
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: 45 additions & 45 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
@@ -214,7 +214,7 @@
214214
jp nc, 0x1234
215215
call nc, 0x1234
216216
push de
217-
sub a, 0x55
217+
sub 0x55
218218
rst 2
219219
ret c
220220
reti
@@ -226,25 +226,25 @@
226226
pop hl
227227
ld (0xFF00+c), a
228228
push hl
229-
and a, 0x55
229+
and 0x55
230230
rst 4
231231
add sp, -0x56
232232
jp hl
233233
ld (0x1234), a
234-
xor a, 0x55
234+
xor 0x55
235235
rst 5
236236
ld a, (0xFF00+0x55)
237237
pop af
238238
ld a, (0xFF00+c)
239239
di
240240
push af
241-
or a, 0x55
241+
or 0x55
242242
rst 6
243243
ldhl sp, 0x55
244244
ld sp, hl
245245
ld a, (0x1234)
246246
ei
247-
cp a, 0x55
247+
cp 0x55
248248
rst 7
249249

250250
// CB 00-FF

0 commit comments

Comments
 (0)