|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object scale.backend.Assembler
public abstract class Assembler
This class is the base class for classes that translate instructions into assembly language.
$Id: Assembler.java,v 1.50 2007-10-04 19:57:48 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
Field Summary | |
---|---|
protected Generator |
gen
The Generator used to generate the instructions. |
static char[] |
hex
Convert an integer from 0 to 15 to a hex digit. |
static boolean |
oneItemPerLine
Specifies whether or not individual data items should be output with their own assembly statement. |
protected boolean |
repsAllowedInAL
Set true if the assembly language allows repititions to be specified by a ':' and a repitition count. |
protected java.lang.String |
source
The source file name. |
Constructor Summary | |
---|---|
Assembler(Generator gen,
java.lang.String source)
Convert the Scribble CFG to instructions. |
Method Summary | |
---|---|
void |
assemble(Emit emit,
SpaceAllocation[] dataAreas)
Generate assembly code for the data areas. |
protected abstract void |
assembleComment(java.lang.String comment,
Emit emit)
Insert the assembler representation of the comment into the output stream. |
abstract long |
assembleData(Emit emit,
SpaceAllocation sa,
long location)
Called for each allocation in a named area. |
protected abstract void |
assembleDataAreaHeader(Emit emit,
int kind)
Generate the assembly directives for each different kind of data area. |
void |
assembleDataBegin(Emit emit,
SpaceAllocation sa,
long location)
Called when a named area is started. |
void |
assembleDataEnd(Emit emit,
SpaceAllocation sa,
long location)
Called when a named area is ended. |
protected abstract void |
assembleEpilog(Emit emit)
Called at the very end of generating assembly code. |
void |
assembleInstructions(Emit emit,
java.lang.String name,
Instruction firstInstruction)
Generate assembly instructions for the list of instructions. |
abstract void |
assembleLabel(Label label,
Emit emit)
Generate a label in the assembly output. |
protected abstract void |
assembleProlog(Emit emit)
Called at the very beginning of generating assembly code. |
abstract java.lang.String |
assembleRegister(int reg)
Convert a register number into its assembly language form. |
protected void |
genAsciiText(Emit emit,
java.lang.String str)
Generate the assembly directive required to generate an ASCII text string. |
protected void |
genBytes(Emit emit,
int numBytes,
long data,
int reps)
Output an integer data item as a string of bytes. |
protected long |
genData(Emit emit,
int dt,
AddressLiteral lit,
int reps,
boolean aligned)
Generate the assembly representation of an address. |
protected long |
genData(Emit emit,
int dt,
byte[] data,
int reps,
boolean aligned)
Generate the assembly representation of an array of byte values. |
protected long |
genData(Emit emit,
int dt,
Declaration decl,
int reps,
boolean aligned)
Generate the assembly representation of a Declaration. |
protected long |
genData(Emit emit,
int dt,
double[] data,
int reps,
boolean aligned)
Generate the assembly representation of an array of double values. |
protected long |
genData(Emit emit,
int dt,
double data,
int reps,
boolean aligned)
Generate the assembly representation of double
floating point value. |
protected long |
genData(Emit emit,
int dt,
Label[] labels,
int reps,
boolean aligned)
Generate the assembly representation of an array of label addresses. |
protected abstract long |
genData(Emit emit,
int dt,
Label lab,
int reps,
boolean aligned)
Generate the data representation for address of the label. |
protected long |
genData(Emit emit,
int dt,
long[] data,
int reps,
boolean aligned)
Generate the assembly representation of an array of long values. |
protected long |
genData(Emit emit,
int dt,
long data,
int reps,
boolean aligned)
Generate the assembly representation of long integer
value. |
protected long |
genData(Emit emit,
int dt,
java.lang.Object value,
int reps,
boolean aligned)
Generate the assembly representation of the specified data value. |
protected long |
genData(Emit emit,
int dt,
java.lang.String value,
int reps,
boolean aligned)
Generate the data representation for the string. |
protected abstract void |
genDirective(Emit emit,
int dt)
Generate the assembly directive required for the type. |
protected void |
genZeroFill(Emit emit,
long size)
Generate the assembly directive required to generate a zero-filled area. |
protected abstract int |
getDirectiveSize(int dt)
Return the number of addressable units required for one value of the specified type. |
java.lang.String |
getDisplayString(char[] v,
int start,
int end)
Convert a string to a form suitable for display. |
abstract java.lang.String |
getLabelString(Label label)
Return the String representing the label. |
java.lang.String |
getName(int handle)
Return the name associated with an area handle. |
SourceLanguage |
getSourceLanguage()
Return the source language of the original program. |
SpaceAllocation |
getSpaceAllocation(int handle)
Return the SpaceAllocation associated with the specified handle. |
boolean |
isFortran()
Return true if the source language is Fortran. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final char[] hex
public static boolean oneItemPerLine
.long 1, 2, 3or
.long 1 .long 2 .long 3
protected Generator gen
Generator
protected java.lang.String source
protected boolean repsAllowedInAL
Constructor Detail |
---|
public Assembler(Generator gen, java.lang.String source)
gen
- is the generator used to generate the instructionssource
- is the source file nameMethod Detail |
---|
public final java.lang.String getName(int handle)
public final SpaceAllocation getSpaceAllocation(int handle)
public void assemble(Emit emit, SpaceAllocation[] dataAreas)
public void assembleInstructions(Emit emit, java.lang.String name, Instruction firstInstruction)
name
- is the associated routine namefirstInstruction
- is the head of the list of instructionspublic final SourceLanguage getSourceLanguage()
public final boolean isFortran()
public abstract java.lang.String getLabelString(Label label)
protected abstract void assembleProlog(Emit emit)
protected abstract void assembleEpilog(Emit emit)
public abstract void assembleLabel(Label label, Emit emit)
protected abstract void assembleComment(java.lang.String comment, Emit emit)
public abstract java.lang.String assembleRegister(int reg)
protected abstract void genDirective(Emit emit, int dt)
emit
- specifies where to put the directive.dt
- - the data typeSpaceAllocation
protected abstract int getDirectiveSize(int dt)
dt
- - the data typeSpaceAllocation
protected void genZeroFill(Emit emit, long size)
emit
- specifies where to put the directive.size
- is the number of bytes of zeros requiredSpaceAllocation
protected void genAsciiText(Emit emit, java.lang.String str)
emit
- specifies where to put the directive.str
- is the stringprotected abstract void assembleDataAreaHeader(Emit emit, int kind)
emit
- is the output sinkkind
- specifies the area kindpublic void assembleDataBegin(Emit emit, SpaceAllocation sa, long location)
emit
- is the output sinksa
- is the data spacelocation
- is the current locationpublic abstract long assembleData(Emit emit, SpaceAllocation sa, long location)
emit
- is the output sinksa
- is the data spacelocation
- is the current locationpublic void assembleDataEnd(Emit emit, SpaceAllocation sa, long location)
emit
- is the output sinksa
- is the data spacelocation
- is the current locationprotected long genData(Emit emit, int dt, java.lang.Object value, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typevalue
- is the datareps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, Label[] labels, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typelabels
- is the array of labelsreps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, Declaration decl, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typedecl
- is the Declarationreps
- specifies how many times to generate the
representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, AddressLiteral lit, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typelit
- specifies the addressreps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, long data, int reps, boolean aligned)
long
integer
value.
emit
- specifies where to generate the datadt
- specifies the data typedata
- specifies the valuereps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, double data, int reps, boolean aligned)
double
floating point value.
emit
- specifies where to generate the datadt
- specifies the data typedata
- specifies the valuereps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, byte[] data, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typedata
- specifies the valuesreps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, long[] data, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typedata
- specifies the valuesreps
- specifies how many times to generate the
representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, double[] data, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typedata
- specifies the valuesreps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected abstract long genData(Emit emit, int dt, Label lab, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typelab
- is the labelreps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected long genData(Emit emit, int dt, java.lang.String value, int reps, boolean aligned)
emit
- specifies where to generate the datadt
- specifies the data typevalue
- is the stringreps
- specifies how many times to generate the representationaligned
- specifies whether the data will be aligned
SpaceAllocation
protected void genBytes(Emit emit, int numBytes, long data, int reps)
emit
- specifies where to generate the datanumBytes
- is the number of bytes of datadata
- is the data to be outputreps
- is the number of times to repeat the datapublic java.lang.String getDisplayString(char[] v, int start, int end)
v
- the original string
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |