Package bytecode
Class CodeFile
- java.lang.Object
-
- bytecode.CodeFile
-
public class CodeFile extends java.lang.ObjectAn instance of this class is to contain a representation of the code of a complete program. Typically, per compilation, there is only one instance of that class, i.e., the typical usage is that of a singleton class.
-
-
Constructor Summary
Constructors Constructor Description CodeFile()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddProcedure(java.lang.String name)Prepare for a procedure declaration and definition.intaddStringConstant(java.lang.String value)Add a string constant.voidaddStruct(java.lang.String name)Prepare the definition of a named record type (struct type).voidaddVariable(java.lang.String name)Prepare a global variable "declaration", i.e.intfieldNumber(java.lang.String structName, java.lang.String varName)Look up the index of a record type.byte[]getBytecode()Returning the resulting bytecode as the overall result of the byte code generation.intglobalVariableNumber(java.lang.String name)Determine the index (an integer) of a global variable declared earlierintprocedureNumber(java.lang.String name)Look up the index of a procedure.voidsetMain(java.lang.String name)Determine the "main" procedureintstructNumber(java.lang.String name)Look up the index of a record type.voidupdateProcedure(CodeProcedure codeProcedure)Finalize the definition of a procedure (whose name has to be added before.voidupdateStruct(CodeStruct codeStruct)Finalize the definition of a named record type (struct type), by providing the "code" object for the record type.voidupdateVariable(java.lang.String name, bytecode.type.CodeType type)Declare the type for a global variable (which must have been added before), Add a global variable "declaration".
-
-
-
Method Detail
-
addVariable
public void addVariable(java.lang.String name)
Prepare a global variable "declaration", i.e. initialize it in adding the name of the variable. Internally, the variable is known via its index, which is not returned by the method.- Parameters:
name- of the variable. The variable name must be unique.
-
updateVariable
public void updateVariable(java.lang.String name, bytecode.type.CodeType type)Declare the type for a global variable (which must have been added before), Add a global variable "declaration". Internally, the variable is managed via its index, which is not returned by the method.- Parameters:
name- of the variable.type- of the variable.
-
addProcedure
public void addProcedure(java.lang.String name)
Prepare for a procedure declaration and definition. Internally, the procedure is is managed via its index, which, however, is not returned by the method.- Parameters:
name- of the variable.
-
updateProcedure
public void updateProcedure(CodeProcedure codeProcedure)
Finalize the definition of a procedure (whose name has to be added before.- Parameters:
codeProcedure- : the "code" of the procedure, which includes parameters and their types.
-
addStruct
public void addStruct(java.lang.String name)
Prepare the definition of a named record type (struct type). Internally, the (name of) the record type is is managed via its index, which, however, is not returned by the method.- Parameters:
name- of the record type
-
updateStruct
public void updateStruct(CodeStruct codeStruct)
Finalize the definition of a named record type (struct type), by providing the "code" object for the record type.- Parameters:
codeStruct- of the record type
-
addStringConstant
public int addStringConstant(java.lang.String value)
Add a string constant. Unlike some other add-methods, the index of the added string constant is returned to the caller.- Parameters:
value- is the string constant- Returns:
- the index under which the the constant is stored
-
globalVariableNumber
public int globalVariableNumber(java.lang.String name)
Determine the index (an integer) of a global variable declared earlier- Parameters:
name- of the variable- Returns:
- the so-called index of a global variable.
-
procedureNumber
public int procedureNumber(java.lang.String name)
Look up the index of a procedure.- Parameters:
name- of the procedure- Returns:
- the index of the procedure.
-
structNumber
public int structNumber(java.lang.String name)
Look up the index of a record type.- Parameters:
name- of the record type- Returns:
- the index of the record type.
-
fieldNumber
public int fieldNumber(java.lang.String structName, java.lang.String varName)Look up the index of a record type.- Parameters:
structName- name of the record typevarName- name of the field- Returns:
- the index of a field inside a record type.
-
setMain
public void setMain(java.lang.String name)
Determine the "main" procedure- Parameters:
name- of the main procedure
-
getBytecode
public byte[] getBytecode()
Returning the resulting bytecode as the overall result of the byte code generation.- Returns:
- the byte code as array of bytes.
-
-