reven.api.BasicBlock(collections.Sequence)
class documentationreven.api
(View In Hierarchy)
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 |
Initialize an instance of BasicBlock from low-level objects. Not meant to be called directly.
Use Point.basic_block
instead.
Parameters | rvn | A reven_api.reven_connection instance. |
rvn_mini_sequence | A reven_api.mini_sequence instance. | |
instructions | A reven_api.vector_of_instruction instance. |
Raises | reven_api.ServiceNotAllowedDuringExecutionError | If this method is called during the execution. |
RuntimeError | If the connection is lost, in case of bad input, or in case of internal service error. | |
ConcurrentAccessError | If the method is called after the comments where modified by another connection. |
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.
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:
project.refresh()
project.trace(your_trace_name)
point = trace.point(sequence_index,
instruction_index)
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.
Raises | reven_api.ServiceNotAllowedDuringExecutionError | If this method is called during the execution. |
RuntimeError | If the connection is lost, in case of bad input, or in case of internal service error. | |
ConcurrentAccessError | If the method is called after the comments were modified by another connection. |