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