scale.backend.sparc
Class SparcAssembler

java.lang.Object
  extended by scale.backend.Assembler
      extended by scale.backend.sparc.SparcAssembler

public final class SparcAssembler
extends Assembler

This class generates Sparc assembly language from a list of Sparc instructions.

$Id: SparcAssembler.java,v 1.41 2007-10-04 19:57:57 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
 
Fields inherited from class scale.backend.Assembler
gen, hex, oneItemPerLine, repsAllowedInAL, source
 
Constructor Summary
SparcAssembler(Generator gen, java.lang.String source)
           
 
Method Summary
 void assembleComment(java.lang.String comment, Emit emit)
          Insert the assembler representation of the comment into the output stream.
 long assembleData(Emit emit, SpaceAllocation sa, long location)
          Called for each allocation in a named area.
 void assembleDataAreaHeader(Emit emit, int kind)
          Generate assembler directives for the start of a data area.
 void assembleDataEnd(Emit emit, SpaceAllocation sa, long location)
          Called when a named area is ended.
 void assembleEpilog(Emit emit)
          Called at the very end of generating assembly code.
 void assembleLabel(Label label, Emit emit)
          Generate a label in the assembly output.
 void assembleProlog(Emit emit)
          Called at the very beginning of generating assembly code.
 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  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 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  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  int getDirectiveSize(int dt)
          Return the number of addressable units required for one value of the specified type.
 java.lang.String getLabelString(Label label)
          Return the String representing the label.
 
Methods inherited from class scale.backend.Assembler
assemble, assembleDataBegin, assembleInstructions, genBytes, genData, genData, genData, genData, genData, genData, getDisplayString, getName, getSourceLanguage, getSpaceAllocation, isFortran
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SparcAssembler

public SparcAssembler(Generator gen,
                      java.lang.String source)
Parameters:
gen - is the instruction generator used to generate the instructions.
source - specifies the source program
Method Detail

assembleProlog

public void assembleProlog(Emit emit)
Called at the very beginning of generating assembly code. Generate assembler directives needed at the beginning of the assembly language file.

Specified by:
assembleProlog in class Assembler

assembleEpilog

public void assembleEpilog(Emit emit)
Called at the very end of generating assembly code. Generate assembler directives needed at the end of the assembly language file.

Specified by:
assembleEpilog in class Assembler

getLabelString

public java.lang.String getLabelString(Label label)
Return the String representing the label.

Specified by:
getLabelString in class Assembler

assembleLabel

public void assembleLabel(Label label,
                          Emit emit)
Generate a label in the assembly output.

Specified by:
assembleLabel in class Assembler

assembleComment

public void assembleComment(java.lang.String comment,
                            Emit emit)
Insert the assembler representation of the comment into the output stream.

Specified by:
assembleComment in class Assembler

assembleRegister

public java.lang.String assembleRegister(int reg)
Convert a register number into its assembly language form.

Specified by:
assembleRegister in class Assembler

assembleDataAreaHeader

public void assembleDataAreaHeader(Emit emit,
                                   int kind)
Generate assembler directives for the start of a data area.

Specified by:
assembleDataAreaHeader in class Assembler
Parameters:
emit - is the sink for the generated assembly code
kind - specifies the area kind

genDirective

protected void genDirective(Emit emit,
                            int dt)
Generate the assembly directive required for the type.

Specified by:
genDirective in class Assembler
Parameters:
dt - - the data type
emit - specifies where to put the directive.
See Also:
SpaceAllocation

getDirectiveSize

protected int getDirectiveSize(int dt)
Return the number of addressable units required for one value of the specified type.

Specified by:
getDirectiveSize in class Assembler
Parameters:
dt - - the data type
See Also:
SpaceAllocation

genZeroFill

protected void genZeroFill(Emit emit,
                           long size)
Generate the assembly directive required to generate a zero-filled area.

Overrides:
genZeroFill in class Assembler
Parameters:
emit - specifies where to put the directive.
size - is the number of bytes of zeros required
See Also:
SpaceAllocation

genAsciiText

protected void genAsciiText(Emit emit,
                            java.lang.String str)
Generate the assembly directive required to generate an ASCII text string.

Overrides:
genAsciiText in class Assembler
Parameters:
emit - specifies where to put the directive.
str - is the string

assembleData

public long assembleData(Emit emit,
                         SpaceAllocation sa,
                         long location)
Called for each allocation in a named area.

Specified by:
assembleData in class Assembler
Parameters:
emit - is the output sink
sa - is the data space
location - is the current location

assembleDataEnd

public void assembleDataEnd(Emit emit,
                            SpaceAllocation sa,
                            long location)
Called when a named area is ended.

Overrides:
assembleDataEnd in class Assembler
Parameters:
emit - is the output sink
sa - is the data space
location - is the current location

genData

protected long genData(Emit emit,
                       int dt,
                       long data,
                       int reps,
                       boolean aligned)
Generate the assembly representation of long integer value.

Overrides:
genData in class Assembler
Parameters:
emit - specifies where to generate the data
dt - specifies the data type
data - specifies the value
reps - specifies how many times to generate the representation
aligned - specifies whether the data will be aligned
Returns:
the number of bytes generated
See Also:
SpaceAllocation

genData

protected long genData(Emit emit,
                       int dt,
                       double data,
                       int reps,
                       boolean aligned)
Generate the assembly representation of double floating point value.

Overrides:
genData in class Assembler
Parameters:
emit - specifies where to generate the data
dt - specifies the data type
data - specifies the value
reps - specifies how many times to generate the representation
aligned - specifies whether the data will be aligned
Returns:
the number of bytes generated
See Also:
SpaceAllocation

genData

protected long genData(Emit emit,
                       int dt,
                       long[] data,
                       int reps,
                       boolean aligned)
Generate the assembly representation of an array of long values.

Overrides:
genData in class Assembler
Parameters:
emit - specifies where to generate the data
dt - specifies the data type
data - specifies the values
reps - specifies how many times to generate the representation
aligned - specifies whether the data will be aligned
Returns:
the number of bytes generated
See Also:
SpaceAllocation

genData

protected long genData(Emit emit,
                       int dt,
                       double[] data,
                       int reps,
                       boolean aligned)
Generate the assembly representation of an array of double values.

Overrides:
genData in class Assembler
Parameters:
emit - specifies where to generate the data
dt - specifies the data type
data - specifies the values
reps - specifies how many times to generate the representation
aligned - specifies whether the data will be aligned
Returns:
the number of bytes generated
See Also:
SpaceAllocation

genData

protected long genData(Emit emit,
                       int dt,
                       Label lab,
                       int reps,
                       boolean aligned)
Generate the data representation for address of the label.

Specified by:
genData in class Assembler
Parameters:
emit - specifies where to generate the data
dt - specifies the data type
lab - is the label
reps - specifies how many times to generate the representation
aligned - specifies whether the data will be aligned
Returns:
the number of bytes generated
See Also:
SpaceAllocation