6

Value Parameters

In general, Pascal passes value parameters in registers or on the stack, widening to a full word if necessary.

Simple Types

With value parameters, simple types match, as in the following example:

The C function, SimVal.c

void SimVal(

 

 

 

 

char

t,

 

 

 

char

f,

 

 

 

char

c,

 

 

 

short

si,

 

 

 

int

i,

 

 

 

float

sr,

 

 

 

double

r,

 

 

 

int

*reply)

 

 

 

{

 

 

 

 

*reply = 0;

 

 

 

if (t)

 

*reply +=

01;

 

if (!f)

 

*reply +=

010;

 

if (c == 'z')

*reply +=

0100;

 

if (si == 9)

*reply +=

01000;

 

if (i == 9)

*reply +=

010000;

 

if (sr ==(float)9.9)

*reply += 0100000;

 

if (r == 9.9)

*reply +=01000000;

 

}

 

 

 

 

 

 

 

 

The C–Pascal Interface

129