6 void initArchitecture(int stackSize, int regsCount);
16 /* The stack when in a user procedure:
18 | fp | - the old fp (before this application)
19 | ret | - return address
20 | sp | - the old sp (before entering this procedure)
21 | env | - points to the enviroment vector
22 | n | - number of arguments
26 | An-1 | - argument n-1
28 Note: sp does NOT have to be equal to fp - for example if we are in the
29 middle of applying a procedure and already pushed some arguments
30 on to the stack (then sp has changed, but fp has not).
32 Macros for user procedures:
34 #define ST_ARG(n) (stack[fp-6-(n)])
35 #define ST_ARG_COUNT() (stack[fp-5])
36 #define ST_OLDFP() (stack[fp-1])
37 #define ST_RET() (stack[fp-2])
38 #define ST_ENV() (stack[fp-4])
39 #define RETURN() goto *pop()
41 /* General Purpose Registers */