mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Improve PC offset management
Basically make it always point to the instruction's first byte. This was the behavior all whom I asked to intuitively expected.
This commit is contained in:
@@ -648,7 +648,7 @@ asmfile : lines;
|
|||||||
lines : /* empty */
|
lines : /* empty */
|
||||||
| lines {
|
| lines {
|
||||||
nListCountEmpty = 0;
|
nListCountEmpty = 0;
|
||||||
nPCOffset = 1;
|
nPCOffset = 0;
|
||||||
} line '\n' {
|
} line '\n' {
|
||||||
nLineNo++;
|
nLineNo++;
|
||||||
nTotalLines++;
|
nTotalLines++;
|
||||||
@@ -738,9 +738,9 @@ simple_pseudoop : include
|
|||||||
| else
|
| else
|
||||||
| endc
|
| endc
|
||||||
| export
|
| export
|
||||||
| { nPCOffset = 0; } db
|
| db
|
||||||
| { nPCOffset = 0; } dw
|
| dw
|
||||||
| { nPCOffset = 0; } dl
|
| dl
|
||||||
| ds
|
| ds
|
||||||
| section
|
| section
|
||||||
| rsreset
|
| rsreset
|
||||||
@@ -1365,31 +1365,31 @@ sectattrs : /* empty */ {
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
cpu_command : z80_adc
|
cpu_command : { nPCOffset = 1; } z80_adc
|
||||||
| z80_add
|
| { nPCOffset = 1; } z80_add
|
||||||
| z80_and
|
| { nPCOffset = 1; } z80_and
|
||||||
| z80_bit
|
| { nPCOffset = 1; } z80_bit
|
||||||
| z80_call
|
| { nPCOffset = 1; } z80_call
|
||||||
| z80_ccf
|
| z80_ccf
|
||||||
| z80_cp
|
| { nPCOffset = 1; } z80_cp
|
||||||
| z80_cpl
|
| z80_cpl
|
||||||
| z80_daa
|
| z80_daa
|
||||||
| z80_dec
|
| { nPCOffset = 1; } z80_dec
|
||||||
| z80_di
|
| z80_di
|
||||||
| z80_ei
|
| z80_ei
|
||||||
| z80_halt
|
| z80_halt
|
||||||
| z80_inc
|
| z80_inc
|
||||||
| z80_jp
|
| { nPCOffset = 1; } z80_jp
|
||||||
| z80_jr
|
| { nPCOffset = 1; } z80_jr
|
||||||
| z80_ld
|
| { nPCOffset = 1; } z80_ld
|
||||||
| z80_ldd
|
| z80_ldd
|
||||||
| z80_ldi
|
| z80_ldi
|
||||||
| z80_ldio
|
| { nPCOffset = 1; } z80_ldio
|
||||||
| z80_nop
|
| z80_nop
|
||||||
| z80_or
|
| { nPCOffset = 1; } z80_or
|
||||||
| z80_pop
|
| z80_pop
|
||||||
| z80_push
|
| z80_push
|
||||||
| z80_res
|
| { nPCOffset = 1; } z80_res
|
||||||
| z80_ret
|
| z80_ret
|
||||||
| z80_reti
|
| z80_reti
|
||||||
| z80_rl
|
| z80_rl
|
||||||
@@ -1400,17 +1400,17 @@ cpu_command : z80_adc
|
|||||||
| z80_rra
|
| z80_rra
|
||||||
| z80_rrc
|
| z80_rrc
|
||||||
| z80_rrca
|
| z80_rrca
|
||||||
| z80_rst
|
| /*{ nPCOffset = 0; }*/ z80_rst
|
||||||
| z80_sbc
|
| { nPCOffset = 1; } z80_sbc
|
||||||
| z80_scf
|
| z80_scf
|
||||||
| z80_set
|
| { nPCOffset = 1; } z80_set
|
||||||
| z80_sla
|
| z80_sla
|
||||||
| z80_sra
|
| z80_sra
|
||||||
| z80_srl
|
| z80_srl
|
||||||
| z80_stop
|
| { nPCOffset = 1; } z80_stop
|
||||||
| z80_sub
|
| { nPCOffset = 1; } z80_sub
|
||||||
| z80_swap
|
| z80_swap
|
||||||
| z80_xor
|
| { nPCOffset = 1; } z80_xor
|
||||||
;
|
;
|
||||||
|
|
||||||
z80_adc : T_Z80_ADC op_a_n {
|
z80_adc : T_Z80_ADC op_a_n {
|
||||||
|
|||||||
13
test/asm/pc-operand.asm
Normal file
13
test/asm/pc-operand.asm
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
SECTION "fixed", ROM0[0]
|
||||||
|
|
||||||
|
rst @ ; rst 0
|
||||||
|
ld de, @ ; ld de, 1
|
||||||
|
bit @, h ; bit 4, h
|
||||||
|
db @, @ ; db 6, 7
|
||||||
|
|
||||||
|
SECTION "floating", ROM0
|
||||||
|
|
||||||
|
rst @ ; rst 8
|
||||||
|
ld l, @ ; ld l, 9
|
||||||
|
dw @, @ ; dw 11, 13
|
||||||
|
dl @, @ ; dl 15, 19
|
||||||
0
test/asm/pc-operand.err
Normal file
0
test/asm/pc-operand.err
Normal file
0
test/asm/pc-operand.out
Normal file
0
test/asm/pc-operand.out
Normal file
BIN
test/asm/pc-operand.out.bin
Normal file
BIN
test/asm/pc-operand.out.bin
Normal file
Binary file not shown.
Reference in New Issue
Block a user