f78
Constructing Function Calls
Contents|Index|Previous|Next
Constructing
function calls
Using the built-in functions
described in the following discussion, you can record the arguments a function
received, and call another function with the same arguments, without knowing
the number or types of the arguments. You can also record the return value
of that function call, and later return that value, without knowing what
data type the function tried to return (as long as your caller expects
that data type).
-
__builtin_apply_args ()
This built-in function returns
a pointer of type void
* to data describing
how to perform a call with the same arguments as were passed to the current
function.
-
The function saves the arg pointer
register, structure value address, and all registers that might be used
to pass arguments to a function into a block of memory allocated on the
stack. Then it returns the address of that block.
-
-
__builtin_apply (function,
arguments, size)
This built-in function invokes
function
(type void
(*)())
with a copy of the parameters described by arguments
(type void
*)
and size
(type int).
-
The value of arguments
should be the value returned by __builtin_apply_args.
The argument size
specifies the size of the stack argument data, in bytes.
-
This function returns a pointer
of type void *
to data describing how to return whatever va
5bb
lue was returned by function
. The data is saved in a block of memory allocated on the stack.
-
It is not always simple to compute
the proper value for size.
The value is used by __builtin_apply
to compute the amount of data that should be pushed on the stack and copied
from the incoming argument area.
-
-
__builtin_return (result)
This built-in function returns
the value described by result
from the containing function. You should specify, for result,
a value returned by __builtin_apply.
0