decompiler  1.0.0
Classes | Typedefs | Functions
op.hh File Reference

The PcodeOp and PcodeOpBank classes. More...

#include "typeop.hh"

Classes

class  ghidra::IopSpace
 Space for storing internal PcodeOp pointers as addresses. More...
 
class  ghidra::PcodeOp
 Lowest level operation of the p-code language. More...
 
struct  ghidra::PcodeOpNode
 An edge in a data-flow path or graph. More...
 
class  ghidra::PieceNode
 A node in a tree structure of CPUI_PIECE operations. More...
 
class  ghidra::PcodeOpBank
 Container class for PcodeOps associated with a single function. More...
 

Typedefs

typedef map< SeqNum, PcodeOp * > ghidra::PcodeOpTree
 A map from sequence number (SeqNum) to PcodeOp.
 

Functions

int4 ghidra::functionalEqualityLevel (Varnode *vn1, Varnode *vn2, Varnode **res1, Varnode **res2)
 Try to determine if vn1 and vn2 contain the same value. More...
 
bool ghidra::functionalEquality (Varnode *vn1, Varnode *vn2)
 Determine if two Varnodes hold the same value. More...
 
bool ghidra::functionalDifference (Varnode *vn1, Varnode *vn2, int4 depth)
 Return true if vn1 and vn2 are verifiably different values. More...
 

Detailed Description

The PcodeOp and PcodeOpBank classes.

Function Documentation

◆ functionalDifference()

bool ghidra::functionalDifference ( Varnode vn1,
Varnode vn2,
int4  depth 
)

Return true if vn1 and vn2 are verifiably different values.

This is actually a rather speculative test

Parameters
vn1is the first Varnode to compare
vn2is the second Varnode
depthis the maximum level to recurse while testing
Returns
true if they are different

◆ functionalEquality()

bool ghidra::functionalEquality ( Varnode vn1,
Varnode vn2 
)

Determine if two Varnodes hold the same value.

Only return true if it can be immediately determined they are equivalent

Parameters
vn1is the first Varnode
vn2is the second Varnode
Returns
true if they are provably equal

◆ functionalEqualityLevel()

int4 ghidra::functionalEqualityLevel ( Varnode vn1,
Varnode vn2,
Varnode **  res1,
Varnode **  res2 
)

Try to determine if vn1 and vn2 contain the same value.

Return:

  • -1, if they do not, or if it can't be immediately verified
  • 0, if they do hold the same value
  • >0, if the result is contingent on additional varnode pairs having the same value In the last case, the varnode pairs are returned as (res1[i],res2[i]), where the return value is the number of pairs.
    Parameters
    vn1is the first Varnode to compare
    vn2is the second Varnode
    res1is a reference to the first returned Varnode
    res2is a reference to the second returned Varnode
    Returns
    the result of the comparison