package Frame;
import Temp.Temp;

public abstract class Frame 
  implements Temp.TempMap {

  // +--------+--------------------------------------------------
  // | Fields |
  // +--------+

  public AccessList formals;
  public Temp.Label name;


  // +---------+-------------------------------------------------
  // | Methods |
  // +---------+

  abstract public Temp RV();
  abstract public Temp FP();
  abstract public Temp.TempList registers(0;
  abstract public String tempMap(Temp temp);
  abstract public int wordSize();
  abstract public Tree.Exp externalCall(String func, Tree.ExpList args);
  abstract public Frame newFrame(Temp.Label name,
                                 Util.BoolList formals);
  abstract public Access allocLocal(boolean escape);
  abstract public String string(Temp.Label label, String value);
  abstract public Tree.Stm procEntryExit1(Tree.Stm body);
  // abstract public Assem.InstrList procEntryExit2(Assem.InstrList body);
  // abstract public Proc procEntryExit3(Assem.InstrList body);
  // abstract public Assem.InstrList codegen(Tree.Stm stm);
} // class Frame

