|
decompiler
1.0.0
|
An edge between a Varnode and a PcodeOp. More...
#include <dynamic.hh>
Public Member Functions | |
| ToOpEdge (const PcodeOp *o, int4 s) | |
| Constructor. | |
| const PcodeOp * | getOp (void) const |
| Get the PcodeOp defining the edge. | |
| int4 | getSlot (void) const |
| Get the slot of the starting Varnode. | |
| bool | operator< (const ToOpEdge &op2) const |
| Compare two edges based on PcodeOp. More... | |
| uint4 | hash (uint4 reg) const |
| Hash this edge into an accumulator. More... | |
Private Attributes | |
| const PcodeOp * | op |
| The PcodeOp defining the edge. | |
| int4 | slot |
| Slot containing the input Varnode or -1 for the p-code op output. | |
An edge between a Varnode and a PcodeOp.
A DynamicHash is defined on a sub-graph of the data-flow, and this defines an edge in the sub-graph. The edge can either be from an input Varnode to the PcodeOp that reads it, or from a PcodeOp to the Varnode it defines.
| uint4 ToOpEdge::hash | ( | uint4 | reg | ) | const |
Hash this edge into an accumulator.
The hash accumulates:
The op-codes are translated so that the hash is invariant under common variants.
| reg | is the incoming hash accumulator value |
References PcodeOp::code(), crc_update(), SeqNum::getAddr(), Address::getAddrSize(), Address::getOffset(), PcodeOp::getSeqNum(), op, slot, and DynamicHash::transtable.
Referenced by DynamicHash::calcHash(), DynamicHash::findVarnode(), DynamicHash::getHash(), getSlot(), and DynamicHash::uniqueHash().
| bool ToOpEdge::operator< | ( | const ToOpEdge & | op2 | ) | const |
Compare two edges based on PcodeOp.
These edges are sorted to provide consistency to the hash The sort is based on the PcodeOp sequence number first, then the Varnode slot
| op2 | is the edge to compare this to |
References SeqNum::getAddr(), SeqNum::getOrder(), PcodeOp::getSeqNum(), op, and slot.
Referenced by getSlot().
1.8.11