kanga.translate
Class MContext

java.lang.Object
  extended by kanga.translate.MContext

public class MContext
extends java.lang.Object

This class represents a context of a procedure's body. It encapsulates the three numbers relevant in generating preamble code for a MIPS procedure. Moreover, it encapsulates a string buffer where the procedure's code is generated via the various attach*() methods available.

Author:
Santoso Wijaya

Field Summary
 int args
          The number of arguments of this procedure context.
 int callArgs
          The maximum number of arguments in a call.
 int stack
          The number of stack slots needed by this procedure context.
 
Constructor Summary
MContext(int args, int stack, int callArgs)
          Creates a context with the given number of arguments, stack slots, and maximum number of arguments in a call.
 
Method Summary
 void attachBranchNotEqual(java.lang.String reg0, java.lang.String reg1, java.lang.String label)
           
 void attachCustom(java.lang.String line)
           
 void attachJump(java.lang.String label)
           
 void attachJumpReturn(java.lang.String addr)
           
 void attachLabel(java.lang.String label)
           
 void attachLoadAddress(java.lang.String dest, java.lang.String src)
           
 void attachLoadImmediate(java.lang.String dest, java.lang.String value)
           
 void attachLoadWord(java.lang.String reg, java.lang.String src)
           
 void attachLoadWord(java.lang.String reg, java.lang.String offset, java.lang.String src)
           
 void attachMove(java.lang.String dest, java.lang.String src)
           
 void attachRType(java.lang.String op, java.lang.String dest, java.lang.String reg0, java.lang.String reg1)
           
 void attachStoreWord(java.lang.String reg, java.lang.String stack)
           
 void attachStoreWord(java.lang.String reg, java.lang.String offset, java.lang.String addr)
           
 void attachSysCall(int routine)
           
 java.lang.String getCode()
          Returns the code string that has been accumulated.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

args

public int args
The number of arguments of this procedure context.


stack

public int stack
The number of stack slots needed by this procedure context.


callArgs

public int callArgs
The maximum number of arguments in a call.

Constructor Detail

MContext

public MContext(int args,
                int stack,
                int callArgs)
Creates a context with the given number of arguments, stack slots, and maximum number of arguments in a call.

Parameters:
args - the number of arguments
stack - the number of stack slots needed
callArgs - the maximum number of arguments in a
Method Detail

getCode

public java.lang.String getCode()
Returns the code string that has been accumulated.

Returns:
the code string

attachMove

public void attachMove(java.lang.String dest,
                       java.lang.String src)

attachLoadWord

public void attachLoadWord(java.lang.String reg,
                           java.lang.String src)

attachLoadWord

public void attachLoadWord(java.lang.String reg,
                           java.lang.String offset,
                           java.lang.String src)

attachLoadAddress

public void attachLoadAddress(java.lang.String dest,
                              java.lang.String src)

attachLoadImmediate

public void attachLoadImmediate(java.lang.String dest,
                                java.lang.String value)

attachStoreWord

public void attachStoreWord(java.lang.String reg,
                            java.lang.String stack)

attachStoreWord

public void attachStoreWord(java.lang.String reg,
                            java.lang.String offset,
                            java.lang.String addr)

attachSysCall

public void attachSysCall(int routine)

attachLabel

public void attachLabel(java.lang.String label)

attachJump

public void attachJump(java.lang.String label)

attachJumpReturn

public void attachJumpReturn(java.lang.String addr)

attachBranchNotEqual

public void attachBranchNotEqual(java.lang.String reg0,
                                 java.lang.String reg1,
                                 java.lang.String label)

attachRType

public void attachRType(java.lang.String op,
                        java.lang.String dest,
                        java.lang.String reg0,
                        java.lang.String reg1)

attachCustom

public void attachCustom(java.lang.String line)