A block of uninterrupted instructions.

The basic block is static, and contains no dynamic information.

Class Iterator BasicBlock instructions iterator.
Method __init__ Initialize an instance of BasicBlock from low-level objects. Not meant to be called directly.
Method comment The basic block comment.
Method set_comment Set the basic block comment.
Method address Property: The basic block virtual address.
Method size Property: The basic block size in bytes.
Method __repr__ Undocumented
Method __contains__ Undocumented
Method __len__ Undocumented
Method __iter__ Undocumented
Method __getitem__ Undocumented
Method _rvn_copy_annotation_vector Undocumented
Method _set_annotation No summary
Method _get_annotation Undocumented
def __init__(self, rvn, rvn_mini_sequence, instructions):

Initialize an instance of BasicBlock from low-level objects. Not meant to be called directly.

Use Point.basic_block instead.

ParametersrvnA reven_api.reven_connection instance.
rvn_mini_sequenceA reven_api.mini_sequence instance.
instructionsA reven_api.vector_of_instruction instance.
def _rvn_copy_annotation_vector(self):
Undocumented
def _set_annotation(self, text, index):
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
ConcurrentAccessErrorIf the method is called after the comments where modified by another connection.
def _get_annotation(self, index):
Undocumented
def comment(self):

The basic block comment.

Although this object is cached like the others, its value is still updated by the local modifications performed using this instance's set_comment method.

def set_comment(self, text):

Set the basic block comment.

To prevent accidental loss of data, you cannot modify the comment of a basic block if it was modified by another connection since you created this BasicBlock instance. If you get a ConcurrentAccessError when trying to call this method, then perform the following step to refresh your BasicBlock instance:

  1. Refresh your project instance: project.refresh()
  2. Re-obtain your trace: project.trace(your_trace_name)
  3. Re-obtain your point: point = trace.point(sequence_index, instruction_index)
  4. Re-obtain your basic block: basic_block = point.basic_block

Of course, you should check how the comments were modified by the other connection before trying to modify them again.

Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
ConcurrentAccessErrorIf the method is called after the comments were modified by another connection.
@property
def address(self):

Property: The basic block virtual address.

@property
def size(self):

Property: The basic block size in bytes.

def __repr__(self):
Undocumented
def __contains__(self, index):
Undocumented
def __len__(self):
Undocumented
def __iter__(self):
Undocumented
def __getitem__(self, index):
Undocumented
API Documentation for reven, generated by pydoctor at 2018-06-06 16:31:21.