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

Reply via email to