Mmm, I explored the field but never went very far due to lack of time.
If you search the archive, you may find some URLs of interest, given by
fellow members.
It can be done in C (Ansi, I don't know), with some juggling...
To really do this with fine control, I fear some assembly code is
necessary, but of course portability is destroyed...
One of the problems is that pushing parameters in the stack, and getting
the result (which can be a struct), is strongly depending on the compiler
and the platform.