From: Odd A. O. <oao...@c2...> - 2004-06-14 13:34:01
|
The problem was with the GetPort0 function. The compiler did not push and pop the acc register. So adding the two nonquoted lines in the code below makes my day. OAO > > unsigned char GetPort0(unsigned long p) > { > xdata unsigned char *paddr; > paddr= (xdata unsigned char *)p; > return *paddr; > } > ;------------------------------------------------------------ > ;Allocation info for local variables in function 'GetPort0' > ;------------------------------------------------------------ > ;p Allocated to registers r2 r3 r4 r5 > ;paddr Allocated to registers r2 r3 r4 > ;------------------------------------------------------------ > ; myn.c:26: unsigned char GetPort0(unsigned long p) > ; genFunction > ; ----------------------------------------- > ; function GetPort0 > ; ----------------------------------------- > GetPort0: > ; genReceive > ; myn.c:29: paddr= (xdata unsigned char *)p; > ; genCast push acc > mov r2,dpl > mov r3,dph > mov r4,dpx > mov r5,b > ; Peephole 238.b removed 3 redundant moves > ; myn.c:30: return *paddr; > ; genPointerGet > ; genFarPointerGet > movx a,@dptr > mov r2,a > ; genRet > mov dpl,r2 > ; genLabel > L00105: > ; genEndFunction pop acc > ret > ; SECTION NOT SUPPORTED > end |