Optimized signed byte code compare

This commit is contained in:
drmortalwombat 2021-10-09 10:38:25 +02:00
parent 210b037dbc
commit 5e02e48c5a
2 changed files with 25 additions and 27 deletions

View File

@ -277,6 +277,11 @@ int main(void)
cmp(-10000, 10000); cmp(-10000, 10000);
cmp(-10000, 20000); cmp(-10000, 20000);
cmp(-20000, 10000); cmp(-20000, 10000);
cmp(-30000, 30000);
cmp(-30000, -30000);
cmp( 30000, 30000);
cmp( 30000, -30000);
cmp( 0, 1024); cmp( 0, 1024);
cmp( 0, -1024); cmp( 0, -1024);

View File

@ -1724,20 +1724,19 @@ W1: jmp startup.exec
__asm cmp __asm cmp
{ {
inp_binop_cmpr_s16: inp_binop_cmpr_s16:
lda accu + 1
eor #$80
sta accu + 1
lda (ip), y lda (ip), y
tax tax
iny iny
sec
lda $01, x lda $01, x
eor #$80 sbc accu + 1
cmp accu + 1 beq cmpeq
bne cmpne cmpnes:
lda $00 , x bvc cmpsv
cmp accu eor #$80
bne cmpne cmpsv: bmi cmp_lt
beq cmp_eq bpl cmp_gt
inp_binop_cmpr_u16: inp_binop_cmpr_u16:
lda (ip), y lda (ip), y
@ -1746,6 +1745,7 @@ inp_binop_cmpr_u16:
lda $01, x lda $01, x
cmp accu + 1 cmp accu + 1
bne cmpne bne cmpne
cmpeq:
lda $00 , x lda $00 , x
cmp accu cmp accu
bne cmpne bne cmpne
@ -1773,6 +1773,7 @@ cmp_lt:
jmp startup.exec jmp startup.exec
cmpne: cmpne:
bcc cmp_lt bcc cmp_lt
cmp_gt:
lda #1 lda #1
sta accu sta accu
lda #0 lda #0
@ -1780,17 +1781,14 @@ cmpne:
jmp startup.exec jmp startup.exec
inp_binop_cmpi_s16: inp_binop_cmpi_s16:
lda accu + 1
eor #$80
sta accu + 1
lda (ip), y lda (ip), y
iny iny
tax tax
lda (ip), y lda (ip), y
iny iny
eor #$80 sec
cmp accu + 1 sbc accu + 1
bne cmpne bne cmpnes
cpx accu cpx accu
bne cmpne bne cmpne
beq cmp_eq beq cmp_eq
@ -2059,16 +2057,12 @@ __asm inp_return
dey dey
beq W1 beq W1
dey dey
beq W2
L1: lda (sp), y L1: lda (sp), y
sta regs, y sta regs, y
dey dey
bne L1 bpl L1
W2: lda (sp), y
sta regs, y
W1: W1:
// adjust stack space // adjust stack space
@ -2086,13 +2080,12 @@ W1:
// reload ip from stack // reload ip from stack
ldy #0 ldy #1
lda (sp), y
sta ip
iny
lda (sp), y lda (sp), y
sta ip + 1 sta ip + 1
dey dey
lda (sp), y
sta ip
jmp startup.exec jmp startup.exec
} }
@ -2137,7 +2130,7 @@ __asm inp_call
tya tya
ldy #0 ldy #0
clc clc
adc ip adc ip
sta (sp), y sta (sp), y
iny iny
lda ip + 1 lda ip + 1