Uses of Class
dspl.backend.AssemblyfileGenerator

Packages that use AssemblyfileGenerator
dspl.backend   
dspl.backend.x86   
 

Uses of AssemblyfileGenerator in dspl.backend
 

Fields in dspl.backend declared as AssemblyfileGenerator
protected  AssemblyfileGenerator InstructionProcessor.afg
          AssemblyfileGenerator to write the assembly instructions to
 

Methods in dspl.backend with parameters of type AssemblyfileGenerator
abstract  void ArithmaticInstructionProcessor.processAddition(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Process an Addition Arithmatic Operation
 void ArithmaticInstructionProcessor.processArithmaticInstructor(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Process an Arithmatic Instruction
abstract  void ArithmaticInstructionProcessor.processAssignment(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Process an Assignment Operation
abstract  void BranchInstructionProcessor.processBranchInstruction(BranchInstruction inst, InstructionProcessor ip, SymbolTable st, AssemblyfileGenerator afg)
          Process a Branch Instruction, converting it into the proper asm instructions
abstract  void CCallInstructionProcessor.processCCallInstruction(CCallInstruction inst, InstructionProcessor ip, SymbolTable st, AssemblyfileGenerator afg)
          Process a CCall Instruction, converting it into the proper asm instructions
abstract  void ArithmaticInstructionProcessor.processConversion(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Process a Conversion Operation
abstract  void ArithmaticInstructionProcessor.processConvolution(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Process a Convolution Operation
abstract  void ArithmaticInstructionProcessor.processDivision(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Process a Divison Operation
abstract  void LoopInstructionProcessor.ProcessLoopInstruction(LoopInstruction inst, InstructionProcessor ip, SymbolTable st, AssemblyfileGenerator afg)
          Process the loop instruction
abstract  void ArithmaticInstructionProcessor.processMultiplication(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Process a Multiplication Operation
abstract  void ArithmaticInstructionProcessor.processSubtraction(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Process a Subtraction Operation
 

Constructors in dspl.backend with parameters of type AssemblyfileGenerator
InstructionProcessor(SymbolTable st, AssemblyfileGenerator afg)
          Constructs an InstructionProcessor given the provided SymbolTable and AssemblyfileGenerator to route instructions to
 

Uses of AssemblyfileGenerator in dspl.backend.x86
 

Fields in dspl.backend.x86 declared as AssemblyfileGenerator
private  AssemblyfileGenerator X86VariableManager.afg
          AssemblyFileGenerator for the current program
Used to write additional move instructions that may be required when providing registers
 

Methods in dspl.backend.x86 with parameters of type AssemblyfileGenerator
static X86Operand X86VariableManager.prepareArg1Variable(Variable var, int allowableOpTypes, AssemblyfileGenerator afg)
          Very important note: Arg1, when retrieved in memory, is stored in eax.
static X86Operand X86VariableManager.prepareArg2Variable(Variable var, int allowableOpTypes, AssemblyfileGenerator afg)
          Very important note: see note above, same holds for ecx
static X86Register X86VariableManager.prepareArrayLocAsReg(Variable var, X86Register reg, AssemblyfileGenerator afg)
          intended specifically when given an array ("iA", for example), do: mov $iA, %(specified reg) and return the specified reg
static X86Operand X86VariableManager.prepareDestVariable(Variable var, int allowableOpTypes, AssemblyfileGenerator afg)
           
static X86Register X86VariableManager.prepareRegVariableWithExplicitMove(Variable var, java.lang.String explicitMovInstruction, AssemblyfileGenerator afg)
          Used when the exact mov instruction for putting the variable into a register is known
Added for type conversions
Always retuns reg in %eax
NOTE: here the register content's lenght IS NOT SET, this must be done after calling the function to get the desired moves for conversion (since length is based on the destination not the src which is the var we have here)
static X86Operand X86VariableManager.prepareVariable(Variable var, X86Register indexRegister, X86Register variableRegister, int allowableOpTypes, AssemblyfileGenerator afg)
           
 void X86ArithmaticInstructionrProcessor.processAddition(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Convert an addition operation into the necessary x86 asm instruction(s)
 void X86ArithmaticInstructionrProcessor.processAssignment(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          x86 assignment.
private  void X86ArithmaticInstructionrProcessor.processAtomicFPInstruction(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg, java.lang.String fpOp)
           
private  void X86ArithmaticInstructionrProcessor.processAtomicInstruction(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg, java.lang.String atomicOp, boolean explicitlyStateEax)
           
 void X86BranchInstructionProcessor.processBranchInstruction(BranchInstruction inst, InstructionProcessor ip, SymbolTable st, AssemblyfileGenerator afg)
          Convert a BranchInstruction into x86 asm instructions
 void X86CCallInstructionProcessor.processCCallInstruction(CCallInstruction inst, InstructionProcessor ip, SymbolTable st, AssemblyfileGenerator afg)
           
 void X86ArithmaticInstructionrProcessor.processConversion(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
          Conversion of natural numbers (ubyte,byte,int,uint) is based upon gcc output...
 void X86ArithmaticInstructionrProcessor.processConvolution(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
           
 void X86ArithmaticInstructionrProcessor.processDivision(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
           
 void X86LoopInstructionProcessor.ProcessLoopInstruction(LoopInstruction inst, InstructionProcessor ip, SymbolTable st, AssemblyfileGenerator afg)
           
 void X86ArithmaticInstructionrProcessor.processMultiplication(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
           
private  void X86ArithmaticInstructionrProcessor.processNonVectorizedArrayArithmatic(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg, java.lang.String arithInst, boolean explicitlyStateEax)
          Helper function to process arithmatic instructions on arrays which cannot be performed with vectorized instructions and thus require a loop-based single value computation for each element in the arrays
 void X86ArithmaticInstructionrProcessor.processSubtraction(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
           
private  void X86ArithmaticInstructionrProcessor.processVectorFPDiv(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg)
           
private  void X86ArithmaticInstructionrProcessor.processVectorInstruction(ArithmaticInstruction instr, SymbolTable st, AssemblyfileGenerator afg, java.lang.String sseOp)
          Code Overview: Example: "iC = iA + iB;" where all three are integer arrays of same length.
static void X86VariableManager.pushFloatingPointVariable(Variable var, AssemblyfileGenerator afg)
          Pushes the floating point variable onto the FPU stack (@ ST(0));
static void X86VariableManager.writeFPLoad(Variable var, X86Operand op, AssemblyfileGenerator afg)
          Pushes op (which represents var) onto the stack
static void X86VariableManager.writeMoveInstruction(X86Operand src, X86Operand dest, AssemblyfileGenerator afg)
           
static void X86VariableManager.writeTopOfFPStack(Variable var, AssemblyfileGenerator afg)
           
static void X86VariableManager.writeVectorMoveInstruction(X86Operand src, X86Operand dest, AssemblyfileGenerator afg, boolean isAligned)
           
 

Constructors in dspl.backend.x86 with parameters of type AssemblyfileGenerator
X86VariableManager(SymbolTable st, AssemblyfileGenerator afg)