dspl.backend.x86.operands
Class X86IndexMemoryOperand

java.lang.Object
  extended by dspl.backend.x86.operands.X86Operand
      extended by dspl.backend.x86.operands.X86IndexMemoryOperand

public class X86IndexMemoryOperand
extends X86Operand

X86IndexedMemoryOperand is an operand of the form: variable(base, index, size)

Example:
movl $5, %edx
movl $10, a(,%edx,4)
The above is equivalent to a[5] = 10; //assuming a is an int_array (data type of size 4)

Author:
David

Field Summary
private  X86Register baseRegister
           
private  X86Register indexRegister
           
private  int size
           
private  java.lang.String varStr
           
 
Fields inherited from class dspl.backend.x86.operands.X86Operand
OPERAND_CLASS_ANY, OPERAND_CLASS_LVALUE, OPERAND_TYPE_IMMEDIATE, OPERAND_TYPE_INDEXED_MEMORY, OPERAND_TYPE_MEMORY, OPERAND_TYPE_REGISTER
 
Constructor Summary
X86IndexMemoryOperand(java.lang.String var, X86Register baseRegister, X86Register indexRegister, int size)
          Used when one wants to explicitly create an IndexMemoryOperand like (%eax, %ecx, 4), which might not have a variable
X86IndexMemoryOperand(Variable var, X86Register baseRegister, X86Register indexRegister, int size)
           
 
Method Summary
 void freeOperand()
          Frees any resources (registers) that have been allocated for the operand
 int getOperandSize()
          Returns the operand's byte size, should be either 1, 2, or 4
 int getOperandType()
          Returns the X86Operand type, must be one of X86Operand.OPERAND_TYPE_xxx
 java.lang.String toString()
           
 
Methods inherited from class dspl.backend.x86.operands.X86Operand
isMemoryType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

varStr

private java.lang.String varStr

baseRegister

private X86Register baseRegister

indexRegister

private X86Register indexRegister

size

private int size
Constructor Detail

X86IndexMemoryOperand

public X86IndexMemoryOperand(java.lang.String var,
                             X86Register baseRegister,
                             X86Register indexRegister,
                             int size)
Used when one wants to explicitly create an IndexMemoryOperand like (%eax, %ecx, 4), which might not have a variable

Parameters:
var -
baseRegister -
indexRegister -
size -

X86IndexMemoryOperand

public X86IndexMemoryOperand(Variable var,
                             X86Register baseRegister,
                             X86Register indexRegister,
                             int size)
Method Detail

freeOperand

public void freeOperand()
Description copied from class: X86Operand
Frees any resources (registers) that have been allocated for the operand

Specified by:
freeOperand in class X86Operand

getOperandType

public int getOperandType()
Description copied from class: X86Operand
Returns the X86Operand type, must be one of X86Operand.OPERAND_TYPE_xxx

Specified by:
getOperandType in class X86Operand
Returns:

toString

public java.lang.String toString()
Specified by:
toString in class X86Operand
Returns:
gnu assembler-friendly representation of the operand

getOperandSize

public int getOperandSize()
Description copied from class: X86Operand
Returns the operand's byte size, should be either 1, 2, or 4

Specified by:
getOperandSize in class X86Operand
Returns: