hello,
I have a question about something I didn't find in the manual.
With the pic16, we automatically have a stack. The resulting code is huge.
char foo(char c, char d) {
return c+d;
}
generates:
; ; Starting pCode block
S_main__foo code
_foo:
; .line 81; main.c char foo(char c, char d) {
MOVFF FSR2L, POSTDEC1
MOVFF FSR1L, FSR2L
MOVFF r0x00, POSTDEC1
MOVFF r0x01, POSTDEC1
MOVLW 0x02
MOVFF PLUSW2, r0x00
MOVLW 0x03
MOVFF PLUSW2, r0x01
; .line 82; main.c return c+d;
MOVF r0x01, W
ADDWF r0x00, F
MOVF r0x00, W
MOVFF PREINC1, r0x01
MOVFF PREINC1, r0x00
MOVFF PREINC1, FSR2L
RETURN
This is a very big overhead. and every movff counts for 2 instructions.
But on the contrary, the 8051 port maps its local variables and parameters
in normal ram, managing the overlaps.
Why can't we use such a data model for the pic port?
this would make a much more compact code.
Regards
Sebastien
------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users
worldwide. Take advantage of special opportunities to increase revenue and
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user