signature FRAME = sig type frame type access val newFrame: {name: Temp.label, formals: bool list} -> frame val name : frame -> Temp.label val formals: frame -> access list val allocLocal : frame -> bool ->access val procEntryExit1 : frame * Tree.exp -> Tree.stm val procEntryExit2 : frame * Assem.instr list -> Assem.instr list (* val procEntryExit3 : frame * Assem.instr list -> *) val externalCall : string * Tree.exp list -> Tree.exp val accessname : access -> string val string : Temp.label * string -> string val tempMap : string Temp.Table.table datatype frag = PROC of {body: Tree.stm, frame : frame } | STRING of Temp.label * string (* page 155 *) val exp : access * Tree.exp -> Tree.exp val wordSize: int val FP : Temp.temp val SP : Temp.temp val RV : Temp.temp val ZERO : Temp.temp val RETURN : Temp.temp val ARG1 : Temp.temp val ARG2 : Temp.temp val ARG3 : Temp.temp val ARG4 : Temp.temp val CALLEESAVED1 : Temp.temp val CALLEESAVED2 : Temp.temp val CALLEESAVED3 : Temp.temp val CALLEESAVED4 : Temp.temp val CALLEESAVED5 : Temp.temp val CALLEESAVED6 : Temp.temp val CALLEESAVED7 : Temp.temp val CALLEESAVED8 : Temp.temp val CALLERSAVED1 : Temp.temp val CALLERSAVED2 : Temp.temp val CALLERSAVED3 : Temp.temp val CALLERSAVED4 : Temp.temp val CALLERSAVED5 : Temp.temp val CALLERSAVED6 : Temp.temp val CALLERSAVED7 : Temp.temp val CALLERSAVED8 : Temp.temp val CALLERSAVED9 : Temp.temp val CALLERSAVED10 : Temp.temp val argregisters : Temp.temp list val calleesaves : Temp.temp list val callersaves : Temp.temp list val string_of_temp : Temp.temp -> string end