Interface IInsnEmulator<T extends IInstructionOperand>

All Known Implementing Classes:
InsnEmulator

public interface IInsnEmulator<T extends IInstructionOperand>
High Level design for an instruction emulator: it indicates if the PC is updated (meaning a jump will be done, see getBranchType() for jump type) and is able to compute the result of the operation. Please note that the #compute(long, int, IInstructionOperand[], IMachineContext) implementation is not guaranteed, plus it can depends on context (register values, memory access).
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static enum 
     
  • Method Summary

    Modifier and Type
    Method
    Description
    compute(byte[] code, long instructionAddress, int mode, T[] armOperands, IMachineContext context)
    Compute the result of the instruction (ADD, SUB...).
    Return BranchType (JUMP or LINK).
    boolean
    Indicate if the instruction can update the PC (by another address than the following one).
  • Method Details

    • isPCUpdated

      boolean isPCUpdated()
      Indicate if the instruction can update the PC (by another address than the following one).
    • compute

      Long compute(byte[] code, long instructionAddress, int mode, T[] armOperands, IMachineContext context) throws ProcessorException
      Compute the result of the instruction (ADD, SUB...). When the context is not provided or has missing entries, this method will return null as result or raise a ProcessorException. If this operation is not implemented, an UnsupportedOperationException will be raised.
      Throws:
      ProcessorException
    • getBranchType

      IInsnEmulator.BranchType getBranchType()
      Return BranchType (JUMP or LINK). See later if more is needed.