7 res = number of return values at top of stack.
8 ;; it returns the stack to where it was before the
9 ;; arguments were pushed then pushes the results.
12 #define LOC(i) frame_pointer[i+n]
13 struct value
*frame_pointer
;
14 #define ARG(i) frame_pointer[i]
15 #define f_push_0() push(ARG(0))
16 #define f_push_1() push(ARG(1))
17 #define f_push_2() push(ARG(2))
18 #define f_push_3() push(ARG(3))
19 #define f_push_i() push(ARG(body[1])); body++
20 #define f_pushl_0() push(LOC(0))
21 #define f_pushl_1() push(LOC(1))
22 #define f_pushl_2() push(LOC(2))
23 #define f_pushl_3() push(LOC(3))
24 #define f_pushl_i() push(LOC(body[1])); body++
25 #define CONSTANT(i) &(constants[i])
26 #define f_pushc_0() push(CONSTANT(0))
27 #define f_pushc_1() push(CONSTANT(1))
28 #define f_pushc_2() push(CONSTANT(2))
29 #define f_pushc_3() push(CONSTANT(3))
30 #define f_pushc_4() push(CONSTANT(4))
31 #define f_pushc_5() push(CONSTANT(5))
32 #define f_pushc_6() push(CONSTANT(6))
33 #define f_pushc_7() push(CONSTANT(7))
34 #define f_pushc_8() push(CONSTANT(8))
35 #define f_pushc_9() push(CONSTANT(9))
36 #define f_pushc_i() push(CONSTANT(body++[1]))
37 #define f_return() goto END
41 #define f_reserve() s_p += body[1]; if (s_p >= STACK_DEPTH-1) int_error("stack_overflow",NO_CARET); body++;
42 #define f_end() goto END;