scale.backend.alpha
Class PrologMarker

java.lang.Object
  extended by scale.backend.Instruction
      extended by scale.backend.Marker
          extended by scale.backend.alpha.PrologMarker
All Implemented Interfaces:
java.lang.Cloneable

public class PrologMarker
extends Marker

This class marks the position for the routine prolog.

$Id: PrologMarker.java,v 1.9 2007-10-04 19:57:52 burrill Exp $

Copyright 2007 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.

Assembly language for the Alpha requires that the assembly program specify information about a routine for the loader and debugger. This "prolog" information must come after various instructions that comprize the routine entry.


Constructor Summary
PrologMarker(int mask, int fmask, int frameReg, int frameSize, int frameOffset, boolean usesGp)
          Create a marker for generating the routine prolog information.
 
Method Summary
 void assembler(Assembler asm, Emit emit)
          Insert the assembler directive for the prolog.
 boolean usesGp()
          Return true if the routine requires a GP register value.
 
Methods inherited from class scale.backend.Marker
getExecutionCycles, getOpcode, independent, instructionSize, isMarker, nullify, remapDestRegister, remapRegisters, remapSrcRegister, specifyRegisterUsage, toString
 
Methods inherited from class scale.backend.Instruction
canBeDeleted, clone, copy, defs, ehash, getBBID, getCopyDest, getCopySrc, getDestRegister, getFunctionalUnit, getLoopNumber, getNext, getPredicate, getPredicates, getSrcRegisters, getTag, isBranch, isCopy, isLabel, isLoad, isMandatory, isPhi, isPredicated, isPredicatedOnTrue, isPrefetch, isSpillInstruction, isSpillLoadPoint, isSpillStorePoint, isStore, markSpillInstruction, mods, nullified, numPredicates, removePredicates, setBBID, setLoopNumber, setMandatory, setNext, setPredicate, setPredicate, setPredicatedOnTrue, setPredicates, setsSpecialReg, setTag, specifyNotSpillLoadPoint, specifySpillStorePoint, uses
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PrologMarker

public PrologMarker(int mask,
                    int fmask,
                    int frameReg,
                    int frameSize,
                    int frameOffset,
                    boolean usesGp)
Create a marker for generating the routine prolog information.

While executing the routine:

The stack_pointer is kept in the SP register.

Parameters:
mask - specifies which integer registers are saved by this routine
fmask - specifies which floating point registers are saved by this routine
frameReg - specifies which register is used as the stack pointer
frameSize - specifies the size in bytes of the stack frame for this routine and must be a multiple of 16
frameOffset - specifies the offset from the virtual frame pointer to the saved registers
usesGp - register is true if this routine requires a GP register value
Method Detail

usesGp

public boolean usesGp()
Return true if the routine requires a GP register value.


assembler

public void assembler(Assembler asm,
                      Emit emit)
Insert the assembler directive for the prolog.

Overrides:
assembler in class Marker