Ghidra Decompiler Analysis Engine
|
A generic functional operator. More...
#include <typeop.hh>
Public Member Functions | |
virtual Datatype * | getOutputLocal (const PcodeOp *op) const |
Find the minimal (or suggested) data-type of an output to this op-code. More... | |
virtual Datatype * | getInputLocal (const PcodeOp *op, int4 slot) const |
Find the minimal (or suggested) data-type of an input to this op-code. More... | |
virtual void | printRaw (ostream &s, const PcodeOp *op) |
Print (for debugging purposes) this specific PcodeOp to the stream. More... | |
Public Member Functions inherited from TypeOp | |
TypeOp (TypeFactory *t, OpCode opc, const string &n) | |
Constructor. More... | |
virtual | ~TypeOp (void) |
Destructor. | |
bool | markExplicitUnsigned (PcodeOp *op, int4 slot) const |
Check if a constant input should be explicitly labeled as unsigned. More... | |
uintb | evaluateUnary (int4 sizeout, int4 sizein, uintb in1) const |
Emulate the unary op-code on an input value. More... | |
uintb | evaluateBinary (int4 sizeout, int4 sizein, uintb in1, uintb in2) const |
Emulate the binary op-code on an input value. More... | |
uintb | recoverInputBinary (int4 slot, int4 sizeout, uintb out, int4 sizein, uintb in) const |
Reverse the binary op-code operation, recovering a constant input value. More... | |
uintb | recoverInputUnary (int4 sizeout, uintb out, int4 sizein) const |
Reverse the unary op-code operation, recovering a constant input value. More... | |
bool | isCommutative (void) const |
Return true if this op-code is commutative. More... | |
bool | inheritsSign (void) const |
Return true if the op-code inherits it signedness from its inputs. | |
virtual Datatype * | getOutputToken (const PcodeOp *op, CastStrategy *castStrategy) const |
Find the data-type of the output that would be assigned by a compiler. More... | |
virtual Datatype * | getInputCast (const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const |
Find the data-type of the input to a specific PcodeOp. More... | |
virtual void | push (PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const =0 |
Push the specific PcodeOp to the emitter's RPN stack. More... | |
virtual string | getOperatorName (const PcodeOp *op) const |
Get the name of the op-code as it should be displayed in context. More... | |
Additional Inherited Members | |
Public Types inherited from TypeOp | |
enum | { inherits_sign = 1, inherits_sign_zero = 2 } |
Static Public Member Functions inherited from TypeOp | |
static void | registerInstructions (vector< TypeOp * > &inst, TypeFactory *tlst, const Translate *trans) |
Build a map from op-code value to the TypeOp information objects. More... | |
static void | selectJavaOperators (vector< TypeOp * > &inst, bool val) |
Toggle Java specific aspects of the op-code information. More... | |
Protected Attributes inherited from TypeOp | |
TypeFactory * | tlst |
Pointer to data-type factory. | |
OpCode | opcode |
The op-code value. | |
uint4 | opflags |
Cached pcode-op properties for this op-code. | |
uint4 | addlflags |
Additional properties. | |
string | name |
Symbol denoting this operation. | |
OpBehavior * | behave |
Object for emulating the behavior of the op-code. | |
A generic functional operator.
The operator takes one or more inputs (with the same data-type by default) and produces one output with specific data-type
Find the minimal (or suggested) data-type of an input to this op-code.
The result should depend only on the op-code itself (and the size of the input)
op | is the PcodeOp being considered |
slot | is the input being considered |
Reimplemented from TypeOp.
Reimplemented in TypeOpExtract, and TypeOpInsert.
|
virtual |