libTriton  version 0.9 build 1502
MemoryAccess

[python api] All information about the memory access Python object.

Description


This object is used to represent a memory access.

Example

>>> ctxt.processing(inst)
True
>>> print(inst)
0x40000: mov ah, byte ptr [rdx + rcx*2 + 0x100]
>>> op1 = inst.getOperands()[1]
>>> print(op1)
[@0x100]:8 bv[7..0]
>>> print(op1.getBaseRegister())
rdx:64 bv[63..0]
>>> print(op1.getIndexRegister())
rcx:64 bv[63..0]
>>> print(op1.getScale())
0x2:64 bv[63..0]
>>> print(op1.getDisplacement())
0x100:64 bv[63..0]
>>> print(op1.getLeaAst())
(bvadd (bvadd (_ bv0 64) (bvmul (_ bv0 64) (_ bv2 64))) (_ bv256 64))
>>> print(hex(op1.getLeaAst().evaluate()))
0x100
>>> print(hex(op1.getAddress()))
0x100
>>> print(op1.getSize())
1

Constructor

>>> mem = MemoryAccess(0x400f4d3, 8)
>>> print(mem)
[@0x400f4d3]:64 bv[63..0]
>>> hex(mem.getAddress())
'0x400f4d3'
>>> mem.getSize()
8

Python API - Methods of the MemoryAccess class


  • integer getAddress(void)
    Returns the target address of the memory access.
    e.g: 0x7fffdd745ae0
  • Register getBaseRegister(void)
    Returns the base register (if exists) of the memory access.
  • integer getBitSize(void)
    Returns the size (in bits) of the memory access.
    e.g: 64
  • BitsVector getBitvector(void)
    Returns the bit vector of the memory cells.
  • Immediate getDisplacement(void)
    Returns the displacement (if exists) of the memory access.
  • Register getIndexRegister(void)
    Returns the index register (if exists) of the memory access.
  • AstNode getLeaAst(void)
    Returns the AST of the memory access (LEA).
  • Immediate getScale(void)
    Returns the scale (if exists) of the memory access.
  • Register getSegmentRegister(void)
    Returns the segment register (if exists) of the memory access. Note that to be user-friendly, the segment register is used as base register and not as a selector into the GDT.
  • integer getSize(void)
    Returns the size (in bytes) of the memory access.
    e.g: 8
  • OPERAND getType(void)
    Returns the type of the memory access. In this case this function returns OPERAND.MEM.
  • bool isOverlapWith(MemoryAccess other)
    Returns true if other and self overlap.
  • void setBaseRegister(Register reg)
    Sets the base register of the memory access.
  • void setDisplacement(Immediate imm)
    Sets the displacement of the memory access.
  • void setIndexRegister(Register reg)
    Sets the index register of the memory access.
  • void setScale(Immediate imm)
    Sets the scale of the memory access.