| 
    Ghidra Decompiler Analysis Engine
    
   | 
 
Manager/container for description objects (UserPcodeOp) of user defined p-code ops. More...
#include <userop.hh>
Public Member Functions | |
| UserOpManage (void) | |
| Construct an empty manager.  | |
| ~UserOpManage (void) | |
| Destructor.  | |
| void | initialize (Architecture *glb) | 
| Initialize description objects for all user defined ops.  More... | |
| void | setDefaults (Architecture *glb) | 
| Create any required operations if they weren't explicitly defined.  More... | |
| UserPcodeOp * | getOp (int4 i) const | 
| UserPcodeOp * | getOp (const string &nm) const | 
| Retrieve description by name.  More... | |
| SegmentOp * | getSegmentOp (int4 i) const | 
| void | parseSegmentOp (const Element *el, Architecture *glb) | 
| Parse a <segmentop> XML tag.  More... | |
| void | parseVolatile (const Element *el, Architecture *glb) | 
| Parse a <volatile> XML tag.  More... | |
| void | parseCallOtherFixup (const Element *el, Architecture *glb) | 
| Parse a <callotherfixup> XML tag.  More... | |
| void | parseJumpAssist (const Element *el, Architecture *glb) | 
| Parse a <jumpassist> XML tag.  More... | |
| void | manualCallOtherFixup (const string &useropname, const string &outname, const vector< string > &inname, const string &snippet, Architecture *glb) | 
| Manually install an InjectedUserOp given just names of the user defined op and the p-code snippet.  More... | |
Manager/container for description objects (UserPcodeOp) of user defined p-code ops.
The description objects are referenced by the CALLOTHER constant id, (or by name during initialization). During initialize(), every user defined p-code op presented by the Architecture is assigned a default UnspecializedPcodeOp description. Further processing of the .cspec or .pspec may reassign a more specialized description object by parsing specific tags using on of this class's parse* methods.
| UserPcodeOp * UserOpManage::getOp | ( | const string & | nm | ) | const | 
Retrieve description by name.
| nm | is the low-level operation name | 
      
  | 
  inline | 
Retrieve a user-op description object by index
| i | is the index | 
      
  | 
  inline | 
Retrieve a segment-op description object by index
| i | is the index | 
| void UserOpManage::initialize | ( | Architecture * | glb | ) | 
Initialize description objects for all user defined ops.
Every user defined p-code op is initially assigned an UnspecializedPcodeOp description, which may get overridden later.
| glb | is the Architecture from which to draw user defined operations | 
| void UserOpManage::manualCallOtherFixup | ( | const string & | useropname, | 
| const string & | outname, | ||
| const vector< string > & | inname, | ||
| const string & | snippet, | ||
| Architecture * | glb | ||
| ) | 
Manually install an InjectedUserOp given just names of the user defined op and the p-code snippet.
An alternate way to attach a call-fixup to user defined p-code ops, without using XML. The p-code to inject is presented as a raw string to be handed to the p-code parser.
| useropname | is the name of the user defined op | 
| outname | is the name of the output variable in the snippet | 
| inname | is the list of input variable names in the snippet | 
| snippet | is the raw p-code source snippet | 
| glb | is the owning Architecture | 
| void UserOpManage::parseCallOtherFixup | ( | const Element * | el, | 
| Architecture * | glb | ||
| ) | 
Parse a <callotherfixup> XML tag.
Create an InjectedUserOp description object based on the XML description and register it with this manager.
| el | is the root <callotherfixup> element | 
| glb | is the owning Architecture | 
| void UserOpManage::parseJumpAssist | ( | const Element * | el, | 
| Architecture * | glb | ||
| ) | 
Parse a <jumpassist> XML tag.
Create a JumpAssistOp description object based on the XML description and register it with this manager.
| el | is the root <jumpassist> element | 
| glb | is the owning Architecture | 
| void UserOpManage::parseSegmentOp | ( | const Element * | el, | 
| Architecture * | glb | ||
| ) | 
Parse a <segmentop> XML tag.
Create a SegmentOp description object based on the tag details and register it with this manager.
| el | is the root <segmentop> element | 
| glb | is the owning Architecture | 
| void UserOpManage::parseVolatile | ( | const Element * | el, | 
| Architecture * | glb | ||
| ) | 
Parse a <volatile> XML tag.
Create either a VolatileReadOp or VolatileWriteOp description object based on the XML details and register it with this manager.
| el | is the root <volatile> element | 
| glb | is the owning Architecture | 
| void UserOpManage::setDefaults | ( | Architecture * | glb | ) | 
Create any required operations if they weren't explicitly defined.
Establish defaults for necessary operators not already defined. Currently this forces volatile read/write operations to exist.
| glb | is the owning Architecture | 
 1.8.17