Skip to content

Commit e3f331c

Browse files
committed
Fix instruction POP
1 parent 0b5a6e6 commit e3f331c

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/emit.dasc

+12-4
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,9 @@ static bool inst_pop(dasm_State **Dst, gbz80_inst *inst, uint64_t *cycles)
402402
| print "POP"
403403
switch (inst->op1) {
404404
case REG_AF:
405-
| mov A, [aMem + xSP + 1]
405+
| mov tmp1, xSP
406+
| add tmp1w, 1
407+
| mov A, [aMem + tmp1]
406408
| mov tmp1b, [aMem + xSP]
407409
| inc SP
408410
| inc SP
@@ -428,19 +430,25 @@ static bool inst_pop(dasm_State **Dst, gbz80_inst *inst, uint64_t *cycles)
428430
| popfq
429431
break;
430432
case REG_BC:
431-
| mov B, [aMem + xSP + 1]
433+
| mov tmp1, xSP
434+
| add tmp1w, 1
435+
| mov B, [aMem + tmp1]
432436
| mov C, [aMem + xSP]
433437
| inc SP
434438
| inc SP
435439
break;
436440
case REG_DE:
437-
| mov D, [aMem + xSP + 1]
441+
| mov tmp1, xSP
442+
| add tmp1w, 1
443+
| mov D, [aMem + tmp1]
438444
| mov E, [aMem + xSP]
439445
| inc SP
440446
| inc SP
441447
break;
442448
case REG_HL:
443-
| mov H, [aMem + xSP + 1]
449+
| mov tmp1, xSP
450+
| add tmp1w, 1
451+
| mov H, [aMem + tmp1]
444452
| mov L, [aMem + xSP]
445453
| inc SP
446454
| inc SP

0 commit comments

Comments
 (0)