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 class
Private class to simultaneously track addresses in both user and kernel address spaces. -
Field Summary
FieldsModifier and TypeFieldDescriptionfinal Assembler.Segment
final Assembler.Segment
final Assembler.Segment
final Assembler.Segment
final Assembler.Segment
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addParsedStatement
(StatementSyntax statement) void
alignSegmentAddress
(int alignment) void
assembleFilenames
(List<String> sourceFilenames) void
assembleFiles
(List<SourceFile> sourceFiles) Parse and generate machine code for the given MIPS program.void
createForwardReferencePatch
(int address, int length, Token identifier) void
defineExtern
(Token identifier, int sizeBytes) getLocalSymbolTable
(String filename) getLog()
getSymbolTable
(String filename) boolean
void
logCompatibilityWarning
(SourceLocation location, String content) void
logError
(SourceLocation location, String content) void
logInfo
(SourceLocation location, String content) void
logWarning
(SourceLocation location, String content) void
makeSymbolGlobal
(Token identifier) void
placeStatement
(BasicStatement statement, int address) void
reset()
void
void
setAutoAlignmentEnabled
(boolean enabled) void
setSegment
(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
-