1
0
mirror of https://github.com/cc65/cc65.git synced 2025-02-26 23:30:03 +00:00

A few minor 65C02 optimizations.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3944 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2009-02-22 15:39:19 +00:00
parent a0cd736adb
commit 3c168b4323
4 changed files with 40 additions and 16 deletions

View File

@ -8,14 +8,21 @@
.import addysp1 .import addysp1
.importzp sp, sreg, tmp1 .importzp sp, sreg, tmp1
.macpack cpu
; EAX = TOS + EAX ; EAX = TOS + EAX
tosaddeax: tosaddeax:
ldy #0 clc
clc .if (.cpu .bitand CPU_ISET_65SC02)
adc (sp),y ; byte 0 adc (sp) ; 65SC02 version - saves 2 cycles
ldy #1
.else
ldy #0
adc (sp),y ; lo byte
iny
.endif
sta tmp1 ; use as temp storage sta tmp1 ; use as temp storage
iny
txa txa
adc (sp),y ; byte 1 adc (sp),y ; byte 1
tax tax

View File

@ -11,13 +11,20 @@
.import addysp1 .import addysp1
.importzp sp, sreg .importzp sp, sreg
.macpack cpu
tossubeax: tossubeax:
ldy #0 sec
sec
eor #$FF eor #$FF
adc (sp),y ; byte 0 .if (.cpu .bitand CPU_ISET_65SC02)
adc (sp) ; 65SC02 version - saves 2 cycles
ldy #1
.else
ldy #0
adc (sp),y ; lo byte
iny
.endif
pha ; Save low byte pha ; Save low byte
iny
txa txa
eor #$FF eor #$FF
adc (sp),y ; byte 1 adc (sp),y ; byte 1

View File

@ -1,5 +1,5 @@
; ;
; Ullrich von Bassewitz, 21.08.1998 ; Ullrich von Bassewitz, 1998-08-21, 2009-02-22
; ;
; CC65 runtime: Pop TOS into sreg ; CC65 runtime: Pop TOS into sreg
; ;
@ -8,15 +8,20 @@
.import incsp2 .import incsp2
.importzp sp, sreg .importzp sp, sreg
.macpack cpu
popsreg: popsreg:
pha ; save A pha ; save A
ldy #0 ldy #1
lda (sp),y ; get lo byte lda (sp),y ; get hi byte
sta sreg ; store it
iny
lda (sp),y ; get hi byte
sta sreg+1 ; store it sta sreg+1 ; store it
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp) ; get lo byte
.else
dey
lda (sp),y ; get lo byte
.endif
sta sreg ; store it
pla ; get A back pla ; get A back
jmp incsp2 ; bump stack and return jmp incsp2 ; bump stack and return

View File

@ -21,6 +21,7 @@
; Use macros for better readability ; Use macros for better readability
.macpack generic .macpack generic
.macpack cpu
; ---------------------------------------------------------------------------- ; ----------------------------------------------------------------------------
@ -38,7 +39,11 @@
lda sp+1 lda sp+1
sta initialsp+1 sta initialsp+1
sbc #>__STACKSIZE__ sbc #>__STACKSIZE__
add #1 ; Add 256 bytes safety area .if (.cpu .bitand ::CPU_ISET_65SC02)
ina ; Add 256 bytes safety area
.else
add #1 ; Add 256 bytes safety area
.endif
sta lowwater+1 sta lowwater+1
rts rts