Crossware

Table of Contents        Previous topic       Next topic       

C COMPILER->In Line Assembler Code->Accessing Local Variables and Function Parameters->Non-Reentrant Functions Mini and Tiny Memory Models

Non-Reentrant Functions, Mini and Tiny Memory Models

The local variables and function parameters are in data and can be accessed by R0 or R1 as for the small memory model but they can also be accessed directly. _bit variables are located in bit addressable data space.

void func(unsigned char Var1, unsigned char Var2)
{
    _bit BitVar;
    unsigned char Var3, Var4;
    _asm(     mov a,{Var1});
    _asm(     mov a,{Var2});
    _asm(     mov a,{Var3});
    _asm(     mov a,{Var4});
    _asm(    mov c,{BitVar});
}

compiles to:

_func
    mov a,__frame_func-1
    mov a,__frame_func-2
    mov a,__frame_func
    mov a,__frame_func+1
    mov c,__bit_frame_func
    RET

;   Function 'func' Internal Objects
;
;   unsigned char _data Var1       __frame_func-1
;   unsigned char _data Var2       __frame_func-2
;   _bit BitVar                              __bit__frame_func+0
;   unsigned char _data Var3       __frame_func+0
;   unsigned char _data Var4       __frame_func+1