1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
/*
\funcref{fun\_ret}{void fun\_ret ()}
{}
{}
{pop(), discard()}
{fun\_call()}
{funret.c}
{
This code terminates a called function. The assembler opcodes {\em mov
sp, bp ; pop bp} are simulated by popping and discarding until {\em sp}
equals {\em bp} and subsequently popping {\em bp}.
After this, the return address is popped and the file pointer
associated with the input file is set to this address.
}
*/
#include "opcodefun.ih"
void fun_ret ()
{
popBP();
{
INT32 ra = (INT32)intValue(top());
pop();
fseek (infile, ra, SEEK_SET);
}
}
|