# Interface: com.pnfsoftware.jeb.core.units.code.asm.processor.IInstructionOperandCMA
- Super interfaces: `com.pnfsoftware.jeb.core.units.code.asm.processor.IInstructionOperandGeneric`

Operands performing *Complex Memory Access* \(CMA\). Such operands access memory via a  combination of registers and displacement values. Specifically, memory references can be made  using a base register, a scaled\-index, and a displacement:  `[baseRegister + scale*indexRegister + displacement]`  

  Note that simple uses of this operand could also be represented using simpler  [IInstructionOperandGeneric](com.pnfsoftware.jeb.core.units.code.asm.processor.IInstructionOperandGeneric.md) objects, eg for \(scaled\-index=None, disp=0\) or \(base=None,  scaled\-index=None\).

## Abstract Method: getMemoryBaseRegister
- return type: `long`

Description: Get the base register identifier.
return: the identifier, \-1 should be used to denote no register

## Abstract Method: getMemoryDisplacement
- return type: `long`

Description: Get the memory displacement.
return: the signed displacement, 0 if none

## Abstract Method: getMemoryIndexRegister
- return type: `long`

Description: Get the index register identifier.
return: the identifier, \-1 should be used to denote no register

## Abstract Method: getMemoryScale
- return type: `int`

Description: Get the scale used with the index register.
return: the scale, 0 if there is no scaled\-index

