Ghidra Decompiler Analysis Engine
|
The base class for a detailed definition of a user-defined p-code operation. More...
#include <userop.hh>
Public Member Functions | |
virtual string | getOperatorName (const PcodeOp *op) const |
Get the symbol representing this operation in decompiled code. More... | |
virtual void | restoreXml (const Element *el)=0 |
Restore the detailed description from an XML stream. More... | |
Protected Attributes | |
string | name |
Low-level name of p-code operator. | |
int4 | useropindex |
Index passed in the CALLOTHER op. | |
Architecture * | glb |
Architecture owning the user defined op. | |
The base class for a detailed definition of a user-defined p-code operation.
Within the raw p-code framework, the CALLOTHER opcode represents a user defined operation. At this level, the operation is just a placeholder for inputs and outputs to same black-box procedure. The first input parameter (index 0) must be a constant id associated with the particular procedure. Classes derived off of this base class provide a more specialized definition of an operation/procedure. The specialized classes are managed via UserOpManage and are associated with CALLOTHER ops via the constant id.
The derived classes can in principle implement any functionality, tailored to the architecture or program. At this base level, the only commonality is a formal name of the operator and its CALLOTHER index. A facility for reading in implementation details is provided via restoreXml().
|
inlinevirtual |
Get the symbol representing this operation in decompiled code.
This will return the symbol formally displayed in source code, which can be tailored more than the low-level name
op | is the operation (in context) where a symbol is needed |
Reimplemented in VolatileWriteOp, and VolatileReadOp.
|
pure virtual |
Restore the detailed description from an XML stream.
The details of how a user defined operation behaves can be dynamically configured from an XML tag.
el | is the root XML element describing the op |
Implemented in JumpAssistOp, SegmentOp, VolatileWriteOp, VolatileReadOp, InjectedUserOp, and UnspecializedPcodeOp.