From: cuz Date: Sat, 24 Mar 2001 16:25:08 +0000 (+0000) Subject: Squeeze one cycle and several bytes out of the pushax routine. X-Git-Tag: V2.12.0~2896 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d1530bc0a24d317329709f473c80eb9cb0204962;p=cc65 Squeeze one cycle and several bytes out of the pushax routine. git-svn-id: svn://svn.cc65.org/cc65/trunk@666 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/libsrc/runtime/pushax.s b/libsrc/runtime/pushax.s index 24029fe6b..22b71e059 100644 --- a/libsrc/runtime/pushax.s +++ b/libsrc/runtime/pushax.s @@ -15,33 +15,21 @@ pusha0: ldx #0 ; Beware^2: The optimizer knows about the value of Y after the function ; returns! -pushax: ldy sp - beq @L1 - dey - beq @L2 - dey -@L0: sty sp -.ifpc02 - sta (sp) ; 65C02 version - saves 2 cycles and one byte - ldy #1 ; get hi index -.else - ldy #0 ; get index - sta (sp),y ; store lo byte - iny ; bump idx -.endif - pha ; save it - txa ; get hi byte - sta (sp),y ; store hi byte - pla ; get A back - rts ; done - -@L1: dey -@L2: dey - dec sp+1 -.ifpc02 - bra @L0 -.else - jmp @L0 -.endif +.proc pushax + pha + lda sp + sec + sbc #2 + sta sp ; (13) + bcs @L1 + dec sp+1 +@L1: ldy #1 + txa ; (20) + sta (sp),y + pla + dey + sta (sp),y ; (38) + rts +.endproc