Table of Contents Previous topic Next topic
C COMPILER->In Line Assembler Code->Accessing Local Variables and Function Parameters->Non-Reentrant Functions Small Memory Model
Non-Reentrant Functions, Small Memory Model
The local variables and function parameters are in idata and must be accessed by R0 or R1, except for _bit variables which are located in bit addressable data space.
void func(unsigned char Var1, unsigned char Var2)
{
_bit BitVar;
unsigned char Var3, Var4;
_asm( mov r0,#{Var1});
_asm( mov a,@r0);
_asm( mov r1,#{Var2});
_asm( mov a,@r1);
_asm( mov r0,#{Var3});
_asm( mov a,@r0);
_asm( mov r1,#{Var4});
_asm( mov a,@r1);
_asm( mov c,{BitVar});
}
compiles to:
_func
mov r0,#__frame_func-1
mov a,@r0
mov r1,#__frame_func-2
mov a,@r1
mov r0,#__frame_func
mov a,@r0
mov r1,#__frame_func+1
mov a,@r1
mov c,__bit_frame_func
RET
; Function 'func' Internal Objects
;
; unsigned char _idata Var1 __frame_func-1
; unsigned char _idata Var2 __frame_func-2
; _bit BitVar __bit__frame_func+0
; unsigned char _idata Var3 __frame_func+0
; unsigned char _idata Var4 __frame_func+1