From: Stephan Lesch (slesch_at_studcs.uni-sb.de)
Date: 2003-01-18 02:21:07
Hi, is there a way to use statically-declared register variables? (For non- recursive functions) That way, you could have better code generated, but still save the overhead for saving/restoring the zeropage locations. I tried it with V 2.9.0, but the register vars declared on top level are mapped to the same zp location: register unsigned char* dest; register unsigned char* src; void cmdstrappend(unsigned char *s){ src = s; if (src) while (*src) {*dest = *src; ++src; ++dest;} } becomes ldy #$01 jsr ldaxysp sta regbank+0 stx regbank+0+1 lda regbank+0 ora regbank+0+1 jeq incsp2 L0007: ldy #$00 lda (regbank+0),y jeq incsp2 lda (regbank+0),y sta (regbank+0),y inc regbank+0 bne L000D inc regbank+0+1 L000D: inc regbank+0 bne L0007 inc regbank+0+1 jmp L0007 I'm compiling with cc65 -t c64 -Oirs regtest.c Is there a way to get the two pointer variables assigned to different locations? (Did I overlook a bugfix, or am I misunderstanding the concept of register vars, and they're just not meant to be declared static?) Regards, Stephan Lesch ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo_at_musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2003-01-18 02:21:14 CET