Optimized signed byte code compare
This commit is contained in:
parent
210b037dbc
commit
5e02e48c5a
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue