Class SleighParserContext

  • All Implemented Interfaces:
    ParserContext

    public class SleighParserContext
    extends java.lang.Object
    implements ParserContext
    All the recovered context for a single instruction The main data structure is the tree of constructors and operands
    • Constructor Detail

      • SleighParserContext

        public SleighParserContext​(Address aAddr,
                                   Address nAddr,
                                   Address rAddr,
                                   Address dAddr)
        Constructor for building precompiled templates
        Parameters:
        aAddr - = address to which 'inst_start' resolves
        nAddr - = address to which 'inst_next' resolves
        rAddr - = special address associated with original call
        dAddr - = destination address of original call being replaced
    • Method Detail

      • getAddr

        public Address getAddr()
      • getNaddr

        public Address getNaddr()
      • setDelaySlotLength

        public void setDelaySlotLength​(int delayByteLength)
      • getMemBuffer

        public MemBuffer getMemBuffer()
      • getInstructionBytes

        public int getInstructionBytes​(int offset,
                                       int bytestart,
                                       int size)
                                throws MemoryAccessException
        Get bytes from the instruction stream into an int (packed in big endian format). Uninitialized or undefined memory will return zero byte values.
        Parameters:
        offset - offset relative start of this context
        bytestart - pattern byte offset relative to specified context offset
        size -
        Returns:
        requested byte-range value
        Throws:
        MemoryAccessException - if no bytes are available at first byte when (offset+bytestart==0).
      • getInstructionBits

        public int getInstructionBits​(int offset,
                                      int startbit,
                                      int size)
                               throws MemoryAccessException
        Get bits from the instruction stream into an int (packed in big endian format). Uninitialized or undefined memory will return zero bit values.
        Parameters:
        offset - offset relative start of this context
        startbit -
        size -
        Returns:
        requested bit-range value
        Throws:
        MemoryAccessException - if no bytes are available at first byte when (offset+bytestart/8==0).
      • getContextBytes

        public int getContextBytes​(int bytestart,
                                   int bytesize)
        Get bytes from context into an int
        Parameters:
        bytestart -
        bytesize - number of bytes (range: 1 - 4)
        Returns:
      • getContextBytes

        public int[] getContextBytes()
        Get full set of context bytes. Sleigh only supports context which is a multiple of 4-bytes (i.e., size of int)
        Returns:
      • getContextBits

        public int getContextBits​(int startbit,
                                  int bitsize)
        Get bits from context into an int
        Parameters:
        startbit -
        bitsize - number of bits (range: 1 - 32)
        Returns:
      • setContextWord

        public void setContextWord​(int i,
                                   int val,
                                   int mask)
      • isValid

        public boolean isValid​(MemBuffer buf)
      • getFlowRefAddr

        public Address getFlowRefAddr()
      • getFlowDestAddr

        public Address getFlowDestAddr()