decompiler
1.0.0
|
Placeholder node for PcodeOp that will exist after a transform is applied to a function. More...
#include <transform.hh>
Public Types | |
enum | { op_replacement = 1, op_preexisting = 2, indirect_creation = 4, indirect_creation_possible_out = 8 } |
Special annotations on new pcode ops. More... | |
Public Member Functions | |
TransformVar * | getOut (void) const |
Get the output placeholder variable for this operator. | |
TransformVar * | getIn (int4 i) const |
Get the i-th input placeholder variable for this. | |
Private Member Functions | |
void | createReplacement (Funcdata *fd) |
Create the new/modified op this placeholder represents. More... | |
bool | attemptInsertion (Funcdata *fd) |
Try to put the new PcodeOp into its basic block. More... | |
Private Attributes | |
PcodeOp * | op |
Original op which this is splitting (or null) | |
PcodeOp * | replacement |
The new replacement op. | |
OpCode | opc |
Opcode of the new op. | |
uint4 | special |
Special handling code when creating. | |
TransformVar * | output |
Varnode output. | |
vector< TransformVar * > | input |
Varnode inputs. | |
TransformOp * | follow |
The following op after this (if not null) | |
Friends | |
class | TransformManager |
class | TransformVar |
Placeholder node for PcodeOp that will exist after a transform is applied to a function.
anonymous enum |
|
private |
Try to put the new PcodeOp into its basic block.
fd | is the function into which the PcodeOp will be inserted |
References ghidra::CPUI_MULTIEQUAL, ghidra::Funcdata::opInsertBefore(), and ghidra::Funcdata::opInsertBegin().
|
private |
Create the new/modified op this placeholder represents.
Create a new PcodeOp or modify an existing one so that it matches this placeholder description. Go ahead an insert the new PcodeOp into the basic block if possible
fd | is the function in which to make the modifications |
References ghidra::CPUI_MULTIEQUAL, ghidra::Funcdata::newOp(), op_preexisting, ghidra::Funcdata::opInsertBefore(), ghidra::Funcdata::opInsertBegin(), ghidra::Funcdata::opInsertInput(), ghidra::Funcdata::opRemoveInput(), ghidra::Funcdata::opSetOpcode(), and ghidra::Funcdata::opUnsetInput().