Package mars.assembler
Class Assembler
java.lang.Object
mars.assembler.Assembler
An Assembler is capable of assembling a MIPS program. It has only one public
method,
assemble(), which implements a two-pass assembler. It
translates MIPS source code into binary machine code.- Author:
- Pete Sanderson, August 2003
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classPrivate class to simultaneously track addresses in both user and kernel address spaces. -
Field Summary
FieldsModifier and TypeFieldDescriptionfinal Assembler.Segmentfinal Assembler.Segmentfinal Assembler.Segmentfinal Assembler.Segmentfinal Assembler.Segment -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddParsedStatement(StatementSyntax statement) voidalignSegmentAddress(int alignment) voidassembleFilenames(List<String> sourceFilenames) voidassembleFiles(List<SourceFile> sourceFiles) Parse and generate machine code for the given MIPS program.voidcreateForwardReferencePatch(int address, int length, Token identifier) voiddefineExtern(Token identifier, int sizeBytes) getLocalSymbolTable(String filename) getLog()getSymbolTable(String filename) booleanvoidlogCompatibilityWarning(SourceLocation location, String content) voidlogError(SourceLocation location, String content) voidlogInfo(SourceLocation location, String content) voidlogWarning(SourceLocation location, String content) voidmakeSymbolGlobal(Token identifier) voidplaceStatement(BasicStatement statement, int address) voidreset()voidvoidsetAutoAlignmentEnabled(boolean enabled) voidsetSegment(Assembler.Segment segment)
-
Field Details
-
textSegment
-
dataSegment
-
kernelTextSegment
-
kernelDataSegment
-
externSegment
-
-
Constructor Details
-
Assembler
public Assembler()
-
-
Method Details
-
getLog
-
logInfo
-
logWarning
-
logCompatibilityWarning
-
logError
-
getSymbol
-
getLocalSymbolTable
-
getLocalSymbolTable
-
getGlobalSymbolTable
-
getSymbolTable
-
getSegment
-
setSegment
-
isAutoAlignmentEnabled
public boolean isAutoAlignmentEnabled() -
setAutoAlignmentEnabled
public void setAutoAlignmentEnabled(boolean enabled) -
getSourceFilenames
-
getTokenizedFiles
-
getParsedStatements
-
getResolvedStatements
-
getAssembledStatements
-
resetExternalState
public void resetExternalState() -
reset
public void reset() -
assembleFilenames
- Throws:
AssemblyError
-
assembleFiles
Parse and generate machine code for the given MIPS program. All source files must have already been tokenized.- Parameters:
sourceFiles- The list of source files which have already been tokenized.- Throws:
AssemblyError
-
addParsedStatement
-
placeStatement
-
alignSegmentAddress
public void alignSegmentAddress(int alignment) -
createForwardReferencePatch
-
defineExtern
-
makeSymbolGlobal
-