beautypg.com

Return value, Special cases, Return value special cases – Zilog Z8F0130 User Manual

Page 244: Table 12, Return value registers

background image

Using the ANSI C-Compiler

UM013037-1212

220

Zilog Developer Studio II – Z8 Encore!
User Manual

Return Value

The compiler places the return values of a function in the registers listed in Table 46.

For functions returning an aggregate, see the Special Cases section below for details about
how they are returned.

Special Cases

Some function calls do not follow the mechanism described in the

Function Call Mecha-

nism: Dynamic Frame

section on page 215. Such cases are described in the following sec-

tions:

Returning Structure

– see page 220

Not Allocating a Local Frame

– see page 220

Returning Structure

If the function returns a structure, the caller allocates the space for the structure and then
passes the address of the return space to the called function as an additional and first argu-
ment. To return a structure, the called function then copies the structure to the memory
block pointed to by this argument.

Not Allocating a Local Frame

The compiler does not allocate a local frame for a function in the following case:

The function does not have any local stack variables, stack arguments, or compiler-
generated temporaries.

Table 46. Return Value Registers

Return Type

Return Value
Registers

char

R0

short

R0,R1

int

R0,R1

long

R0,R1,R2,R3

float

R0,R1,R2,R3

double

R0,R1,R2,R3

near *

R0

far *

R0,R1

rom *

R0,R1