Class EmulateInstructionStateModifier


  • public abstract class EmulateInstructionStateModifier
    extends java.lang.Object
    EmulateInstructionStateModifier defines a language specific handler to assist emulation with adjusting the current execution state, providing support for custom pcodeop's (i.e., CALLOTHER). The implementation of this interface must provide a public constructor which takes a single Emulate argument.
    • Field Detail

      • language

        protected final Language language
    • Constructor Detail

      • EmulateInstructionStateModifier

        protected EmulateInstructionStateModifier​(Emulate emu)
    • Method Detail

      • registerPcodeOpBehavior

        protected final void registerPcodeOpBehavior​(java.lang.String opName,
                                                     OpBehaviorOther pcodeOpBehavior)
        Register a pcodeop behavior corresponding to a CALLOTHER opcode.
        Parameters:
        opName - name as defined within language via "define pcodeop"
        pcodeOpBehavior -
      • executeCallOther

        public final boolean executeCallOther​(PcodeOp op)
                                       throws LowlevelError
        Execute a CALLOTHER op
        Parameters:
        op -
        Returns:
        true if corresponding pcodeop was registered and emulation support is performed, or false if corresponding pcodeop is not supported by this class.
        Throws:
        LowlevelError
      • initialExecuteCallback

        public void initialExecuteCallback​(Emulate emulate,
                                           Address current_address,
                                           RegisterValue contextRegisterValue)
                                    throws LowlevelError
        Emulation callback immediately before the first instruction is executed. This callback permits any language specific initializations to be performed.
        Parameters:
        emulate -
        current_address - intial execute address
        contextRegisterValue - initial context value or null if not applicable or unknown
        Throws:
        LowlevelError
      • postExecuteCallback

        public void postExecuteCallback​(Emulate emulate,
                                        Address lastExecuteAddress,
                                        PcodeOp[] lastExecutePcode,
                                        int lastPcodeIndex,
                                        Address currentAddress)
                                 throws LowlevelError
        Emulation callback immediately following execution of the lastExecuteAddress. One use of this callback is to modify the flowing/future context state.
        Parameters:
        emulate -
        lastExecuteAddress -
        lastExecutePcode -
        lastPcodeIndex - pcode index of last op or -1 if no pcode or fall-through occurred.
        currentAddress -
        Throws:
        LowlevelError