SDCC revision 7520

;--------------------------------------------------------
; File Created by SDCC : free open source ANSI-C Compiler
; Version 3.1.4 #7520 (Mar 31 2012) (MINGW32)
; This file was generated Fri Apr 06 04:20:22 2012
;--------------------------------------------------------
        .module I2C_DBGN
        .optsdcc -mmcs51 --model-small

Source code:

void Compl8b (__idata U8 *p8) //__reentrant
{
*p8 = ~(*p8);
p8++;
*p8 = ~(*p8);
p8++;
*p8 = ~(*p8);
p8++;
*p8 = ~(*p8);
p8++;
(*(p8)) = ~(*(p8));
p8++;
(*(p8)) = ~(*(p8));
p8++;
(*(p8)) = ~(*(p8));
p8++;
(*(p8)) = ~(*(p8));
p8++;
}

Asm output:
NO variable load after pointer changes!!
See below:

;------------------------------------------------------------
;Allocation info for local variables in function 'Compl8b'
;------------------------------------------------------------
;p8                        Allocated to registers r1 
;------------------------------------------------------------
        G$Compl8b$0$0 ==.
        C$I2C_DBGN.c$4746$1$439 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4746: void Compl8b (__idata U8 *p8) 
//__reentrant
;       -----------------------------------------
;        function Compl8b
;       -----------------------------------------
_Compl8b:
        push    ar7
        push    ar1
        mov     r1,dpl
        C$I2C_DBGN.c$4748$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4748: *p8 = ~(*p8);
        mov     a,@r1
        cpl     a
        mov     r7,a
        mov     @r1,a
        inc     r1
        C$I2C_DBGN.c$4749$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4749: p8++;
        C$I2C_DBGN.c$4750$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4750: *p8 = ~(*p8);
        mov     a,r7
        cpl     a
        mov     r7,a
        mov     @r1,a
        inc     r1
        C$I2C_DBGN.c$4751$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4751: p8++;
        C$I2C_DBGN.c$4752$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4752: *p8 = ~(*p8);
        mov     a,r7
        cpl     a
        mov     r7,a
        mov     @r1,a
        inc     r1
        C$I2C_DBGN.c$4753$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4753: p8++;
        C$I2C_DBGN.c$4754$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4754: *p8 = ~(*p8);
        mov     a,r7
        cpl     a
        mov     r7,a
        mov     @r1,a
        inc     r1
        C$I2C_DBGN.c$4755$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4755: p8++;
        C$I2C_DBGN.c$4756$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4756: (*(p8)) = ~(*(p8));
        mov     a,r7
        cpl     a
        mov     r7,a
        mov     @r1,a
        inc     r1
        C$I2C_DBGN.c$4757$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4757: p8++;
        C$I2C_DBGN.c$4758$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4758: (*(p8)) = ~(*(p8));
        mov     a,r7
        cpl     a
        mov     r7,a
        mov     @r1,a
        inc     r1
        C$I2C_DBGN.c$4759$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4759: p8++;
        C$I2C_DBGN.c$4760$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4760: (*(p8)) = ~(*(p8));
        mov     a,r7
        cpl     a
        mov     r7,a
        mov     @r1,a
        inc     r1
        C$I2C_DBGN.c$4761$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4761: p8++;
        C$I2C_DBGN.c$4762$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4762: (*(p8)) = ~(*(p8));
        mov     a,r7
        cpl     a
        mov     @r1,a
        C$I2C_DBGN.c$4763$1$446 ==.
;       C:\\PC104_T1\\I2C_DBGN.c:4763: p8++;
        pop     ar1
        pop     ar7
        C$I2C_DBGN.c$4764$1$446 ==.
        XG$Compl8b$0$0 ==.
        ret
;       eliminated unneeded push/pop ar0

------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to