mirror of
https://github.com/cc65/cc65.git
synced 2024-12-24 11:31:31 +00:00
Splitted the lconvert module into three smaller ones to allow for smaller
executables if not all functions are used. git-svn-id: svn://svn.cc65.org/cc65/trunk@392 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
b0e41e487d
commit
e3a8e6bbe4
@ -12,26 +12,128 @@
|
||||
@echo $<
|
||||
@$(AS) -g -o $@ $(AFLAGS) $<
|
||||
|
||||
OBJS = runtime.o mul.o div.o push.o inc.o dec.o shl.o shr.o add.o\
|
||||
sub.o rsub.o or.o xor.o and.o neg.o bneg.o compl.o icmp.o\
|
||||
call.o swap.o switch.o gt.o ugt.o ge.o makebool.o ldau0sp.o\
|
||||
uge.o lt.o ult.o le.o ule.o eq.o ne.o test.o subeqsp.o\
|
||||
udiv.o umod.o mod.o shelp.o aslax1.o asrax1.o shrax1.o\
|
||||
aslax2.o asrax2.o shrax2.o aslax3.o asrax3.o shrax3.o\
|
||||
enter.o leave.o leasp.o popsreg.o ldai.o ldaxi.o ldauisp.o\
|
||||
ldaui.o pushw.o pushb.o staxsp.o ldaxsp.o addeqsp.o\
|
||||
bpushbsp.o pushwsp.o pushbsp.o
|
||||
OBJS = add.o \
|
||||
addeqsp.o \
|
||||
and.o \
|
||||
aslax1.o \
|
||||
aslax2.o \
|
||||
aslax3.o \
|
||||
asleax1.o \
|
||||
asleax2.o \
|
||||
asleax3.o \
|
||||
asrax1.o \
|
||||
asrax2.o \
|
||||
asrax3.o \
|
||||
asreax1.o \
|
||||
asreax2.o \
|
||||
asreax3.o \
|
||||
axlong.o \
|
||||
bneg.o \
|
||||
bpushbsp.o \
|
||||
call.o \
|
||||
compl.o \
|
||||
dec.o \
|
||||
div.o \
|
||||
enter.o \
|
||||
eq.o \
|
||||
ge.o \
|
||||
gt.o \
|
||||
icmp.o \
|
||||
inc.o \
|
||||
ladd.o \
|
||||
laddeq.o \
|
||||
laddeqsp.o \
|
||||
land.o \
|
||||
lbneg.o \
|
||||
lcmp.o \
|
||||
lcompl.o \
|
||||
ldai.o \
|
||||
ldau0sp.o \
|
||||
ldaui.o \
|
||||
ldauisp.o \
|
||||
ldaxi.o \
|
||||
ldaxsp.o \
|
||||
ldeax.o \
|
||||
ldeaxi.o \
|
||||
ldec.o \
|
||||
ldiv.o \
|
||||
le.o \
|
||||
leasp.o \
|
||||
leave.o \
|
||||
leq.o \
|
||||
lge.o \
|
||||
lgt.o \
|
||||
linc.o \
|
||||
lle.o \
|
||||
llt.o \
|
||||
lmod.o \
|
||||
lmul.o \
|
||||
lne.o \
|
||||
lneg.o \
|
||||
lor.o \
|
||||
lpop.o \
|
||||
lpush.o \
|
||||
lrsub.o \
|
||||
lruntime.o \
|
||||
lsave.o \
|
||||
lshelp.o \
|
||||
lshl.o \
|
||||
lshr.o \
|
||||
lsub.o \
|
||||
lsubeq.o \
|
||||
lsubeqsp.o \
|
||||
lswap.o \
|
||||
lswitch.o \
|
||||
lt.o \
|
||||
ltest.o \
|
||||
ludiv.o \
|
||||
luge.o \
|
||||
lugt.o \
|
||||
lule.o \
|
||||
lult.o \
|
||||
lumod.o \
|
||||
lxor.o \
|
||||
makebool.o \
|
||||
mod.o \
|
||||
mul.o \
|
||||
ne.o \
|
||||
neg.o \
|
||||
or.o \
|
||||
popsreg.o \
|
||||
push.o \
|
||||
pushb.o \
|
||||
pushbsp.o \
|
||||
pushw.o \
|
||||
pushwsp.o \
|
||||
rsub.o \
|
||||
runtime.o \
|
||||
shelp.o \
|
||||
shl.o \
|
||||
shr.o \
|
||||
shrax1.o \
|
||||
shrax2.o \
|
||||
shrax3.o \
|
||||
shreax1.o \
|
||||
shreax2.o \
|
||||
shreax3.o \
|
||||
staxsp.o \
|
||||
steaxsp.o \
|
||||
sub.o \
|
||||
subeqsp.o \
|
||||
swap.o \
|
||||
switch.o \
|
||||
test.o \
|
||||
tosint.o \
|
||||
toslong.o \
|
||||
udiv.o \
|
||||
uge.o \
|
||||
ugt.o \
|
||||
ule.o \
|
||||
ult.o \
|
||||
umod.o \
|
||||
xor.o
|
||||
|
||||
LOBJS = lruntime.o lconvert.o ladd.o lsub.o lrsub.o leq.o lne.o\
|
||||
lneg.o lbneg.o lcompl.o lpush.o land.o lor.o lxor.o ldeaxi.o\
|
||||
ltest.o llt.o lle.o lge.o lgt.o lsave.o asleax1.o laddeqsp.o\
|
||||
asreax1.o shreax1.o asleax2.o asreax2.o shreax2.o lsubeqsp.o\
|
||||
asleax3.o asreax3.o shreax3.o lmul.o lshelp.o ludiv.o lumod.o\
|
||||
ldiv.o lmod.o lswitch.o steaxsp.o lshr.o lshl.o lcmp.o lugt.o\
|
||||
luge.o lult.o lule.o linc.o ldec.o lswap.o lpop.o ldeax.o\
|
||||
lsubeq.o laddeq.o
|
||||
|
||||
all: $(OBJS) $(LOBJS)
|
||||
all: $(OBJS)
|
||||
|
||||
clean:
|
||||
@rm -f *~ $(COBJS:.o=.s) $(OBJS) $(LOBJS)
|
||||
|
26
libsrc/runtime/axlong.s
Normal file
26
libsrc/runtime/axlong.s
Normal file
@ -0,0 +1,26 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 25.10.2000
|
||||
;
|
||||
; CC65 runtime: Convert int in ax into a long
|
||||
;
|
||||
|
||||
.export axulong, axlong
|
||||
.importzp sreg
|
||||
|
||||
; Convert AX from int to long in EAX
|
||||
|
||||
axulong:
|
||||
ldy #0
|
||||
sty sreg
|
||||
sty sreg+1
|
||||
rts
|
||||
|
||||
axlong: cpx #$80 ; Positive?
|
||||
bcc axulong ; Yes, handle like unsigned type
|
||||
ldy #$ff
|
||||
sty sreg
|
||||
sty sreg+1
|
||||
rts
|
||||
|
||||
|
||||
|
@ -1,88 +0,0 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 05.08.1998
|
||||
;
|
||||
; CC65 runtime: long conversion routines
|
||||
;
|
||||
|
||||
;
|
||||
; Convert TOS from long to int by cutting of the high 16bit
|
||||
;
|
||||
.export tosint, tosulong, toslong, axulong, axlong
|
||||
.import incsp2, decsp2
|
||||
.importzp sp, sreg
|
||||
|
||||
tosint: pha
|
||||
ldy #0
|
||||
lda (sp),y ; sp+1
|
||||
ldy #2
|
||||
sta (sp),y
|
||||
ldy #1
|
||||
lda (sp),y
|
||||
ldy #3
|
||||
sta (sp),y
|
||||
pla
|
||||
jmp incsp2 ; Drop 16 bit
|
||||
|
||||
;
|
||||
; Convert TOS from int to long
|
||||
;
|
||||
|
||||
tosulong:
|
||||
pha
|
||||
jsr decsp2 ; Make room
|
||||
ldy #2
|
||||
lda (sp),y
|
||||
ldy #0
|
||||
sta (sp),y
|
||||
ldy #3
|
||||
lda (sp),y
|
||||
ldy #1
|
||||
sta (sp),y
|
||||
lda #0 ; Zero extend
|
||||
toslong2:
|
||||
iny
|
||||
sta (sp),y
|
||||
iny
|
||||
sta (sp),y
|
||||
pla
|
||||
rts
|
||||
|
||||
toslong:
|
||||
pha
|
||||
jsr decsp2 ; Make room
|
||||
ldy #2
|
||||
lda (sp),y
|
||||
ldy #0
|
||||
sta (sp),y
|
||||
ldy #3
|
||||
lda (sp),y
|
||||
bmi toslong1
|
||||
ldy #1
|
||||
sta (sp),y
|
||||
lda #$00 ; Positive, high word is zero
|
||||
bne toslong2
|
||||
toslong1:
|
||||
ldy #1
|
||||
sta (sp),y
|
||||
lda #$FF
|
||||
bne toslong2
|
||||
|
||||
;
|
||||
; Convert AX from int to long in EAX
|
||||
;
|
||||
|
||||
axulong:
|
||||
ldy #0
|
||||
sty sreg
|
||||
sty sreg+1
|
||||
rts
|
||||
|
||||
axlong: cpx #$80 ; Positive?
|
||||
bcc axulong ; Yes, handle like unsigned type
|
||||
ldy #$ff
|
||||
sty sreg
|
||||
sty sreg+1
|
||||
rts
|
||||
|
||||
|
||||
|
24
libsrc/runtime/tosint.s
Normal file
24
libsrc/runtime/tosint.s
Normal file
@ -0,0 +1,24 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 25.10.2000
|
||||
;
|
||||
; CC65 runtime: Convert tos from long to int
|
||||
;
|
||||
|
||||
.export tosint
|
||||
.import incsp2
|
||||
.importzp sp
|
||||
|
||||
; Convert TOS from long to int by cutting of the high 16bit
|
||||
|
||||
tosint: pha
|
||||
ldy #0
|
||||
lda (sp),y ; sp+1
|
||||
ldy #2
|
||||
sta (sp),y
|
||||
ldy #1
|
||||
lda (sp),y
|
||||
ldy #3
|
||||
sta (sp),y
|
||||
pla
|
||||
jmp incsp2 ; Drop 16 bit
|
||||
|
52
libsrc/runtime/toslong.s
Normal file
52
libsrc/runtime/toslong.s
Normal file
@ -0,0 +1,52 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 25.10.2000
|
||||
;
|
||||
; CC65 runtime: Convert tos from int to long
|
||||
;
|
||||
|
||||
.export tosulong, toslong
|
||||
.import decsp2
|
||||
.importzp sp
|
||||
|
||||
; Convert TOS from int to long
|
||||
|
||||
tosulong:
|
||||
pha
|
||||
jsr decsp2 ; Make room
|
||||
ldy #2
|
||||
lda (sp),y
|
||||
ldy #0
|
||||
sta (sp),y
|
||||
ldy #3
|
||||
lda (sp),y
|
||||
ldy #1
|
||||
sta (sp),y
|
||||
lda #0 ; Zero extend
|
||||
toslong2:
|
||||
iny
|
||||
sta (sp),y
|
||||
iny
|
||||
sta (sp),y
|
||||
pla
|
||||
rts
|
||||
|
||||
toslong:
|
||||
pha
|
||||
jsr decsp2 ; Make room
|
||||
ldy #2
|
||||
lda (sp),y
|
||||
ldy #0
|
||||
sta (sp),y
|
||||
ldy #3
|
||||
lda (sp),y
|
||||
bmi toslong1
|
||||
ldy #1
|
||||
sta (sp),y
|
||||
lda #$00 ; Positive, high word is zero
|
||||
bne toslong2
|
||||
toslong1:
|
||||
ldy #1
|
||||
sta (sp),y
|
||||
lda #$FF
|
||||
bne toslong2
|
||||
|
Loading…
Reference in New Issue
Block a user