microprobe.target.isa.operand.InstructionAddressRelativeOperand

class InstructionAddressRelativeOperand(name, descr, maxdispl, mindispl, shift, except_range, relative)[source]

Bases: microprobe.target.isa.operand.Operand

Class to represent a relative instruction address operand.

Relative instruction address operands are used for immediates operands used to compute relative distance between the current instruction and the target. Examples are : branch relative, or load address relative.

__init__(name, descr, maxdispl, mindispl, shift, except_range, relative)[source]

Create a InstructionAddressRelativeOperand object.

Parameters:
  • name (str) – Operand name
  • descr (str) – Operand description
  • maxdispl (:int) – Maximum displacement allowed
  • mindispl (:int) – Minimum displacement allowed
  • shift (:int) – Number of shifted bits
  • except_range (list of tuple() with int) – list of forbidden ranges for displacement. Ranges are represented using (lower_bound, upper_bound)
Return type:

InstructionAddressRelativeOperand

Methods

__init__(name, descr, maxdispl, mindispl, …) Create a InstructionAddressRelativeOperand object.
access(dummy)
param dummy:
check(value)
param value:
codification(value)
param value:
copy()
random_value() Return a random possible value for the operand.
representation(value)
param value:
set_valid_values(values)
param values:
values() Return the possible value of the operand.

Attributes

address_absolute Operand is for generating absolute addresses (bool).
address_base Operand is the base register for an address (bool).
address_immediate Operand is an immediate of an address (bool).
address_index Operand is the index register for an address (bool).
address_relative Operand is for generating relative addresses (bool).
constant Operand is constant (bool).
description Operand description (str).
float Operand is float (bool).
immediate Operand is immediate (bool).
name Operand name (str).
shift
vector Operand is vector (bool).



copy()[source]
values()[source]

Return the possible value of the operand.

Return type:list of :int
random_value()[source]

Return a random possible value for the operand.

Return type::int
representation(value)[source]
Parameters:value
check(value)[source]
Parameters:value
address_absolute

Operand is for generating absolute addresses (bool).

address_base

Operand is the base register for an address (bool).

address_immediate

Operand is an immediate of an address (bool).

address_index

Operand is the index register for an address (bool).

address_relative

Operand is for generating relative addresses (bool).

codification(value)[source]
Parameters:value
constant

Operand is constant (bool).

description

Operand description (str).

float

Operand is float (bool).

immediate

Operand is immediate (bool).

name

Operand name (str).

vector

Operand is vector (bool).

shift
access(dummy)[source]
Parameters:dummy
set_valid_values(values)[source]
Parameters:values