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, 20000);
cmp(-20000, 10000);
cmp(-30000, 30000);
cmp(-30000, -30000);
cmp( 30000, 30000);
cmp( 30000, -30000);
cmp( 0, 1024);
cmp( 0, -1024);

View File

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