Package ghidra.test

Class ToyProgramBuilder

    • Constructor Detail

      • ToyProgramBuilder

        public ToyProgramBuilder​(java.lang.String name,
                                 java.lang.String languageName,
                                 java.lang.Object consumer)
                          throws java.lang.Exception
        Construct toy program builder using specified toy language
        Parameters:
        name - program name
        languageName - toy language ID (note: only builder variant supports all instructions)
        consumer - program consumer (if null this builder will be used as consumer and must be disposed to release program)
        Throws:
        java.lang.Exception
      • ToyProgramBuilder

        public ToyProgramBuilder​(java.lang.String name,
                                 boolean bigEndian)
                          throws java.lang.Exception
        Construct toy program builder using toy language "builder" variant. This builder will be the program consumer and must be disposed
        Parameters:
        name - program name
        bigEndian - language endianess
        Throws:
        java.lang.Exception
      • ToyProgramBuilder

        public ToyProgramBuilder​(java.lang.String name,
                                 boolean bigEndian,
                                 java.lang.Object consumer)
                          throws java.lang.Exception
        Construct toy program builder using toy language "builder" variant. This builder will be the program consumer and must be disposed
        Parameters:
        name - program name
        bigEndian - language endianess
        consumer - program consumer (if null this builder will be used as consumer and must be disposed to release program)
        Throws:
        java.lang.Exception
      • ToyProgramBuilder

        public ToyProgramBuilder​(java.lang.String name,
                                 boolean bigEndian,
                                 boolean wordAligned,
                                 java.lang.Object consumer)
                          throws java.lang.Exception
        Construct toy program builder using toy language "builder" variant. This builder will be the program consumer and must be disposed
        Parameters:
        name - program name
        bigEndian - language endianess
        consumer - program consumer (if null this builder will be used as consumer and must be disposed to release program)
        Throws:
        java.lang.Exception
    • Method Detail

      • getAddress

        public Address getAddress​(long offset)
        Get address in default ram space
        Parameters:
        offset - address offset
        Returns:
        the address
      • getDefinedInstructionAddress

        public java.util.List<Address> getDefinedInstructionAddress()
        Get locations where instruction bytes have been added
        Returns:
        instruction start locations
      • resetDefinedInstructionAddresses

        public void resetDefinedInstructionAddresses()
        Reset/clear the list of defined instruction addresses
      • addBytesNOP

        public void addBytesNOP​(long offset,
                                int length)
                         throws MemoryAccessException
        Add NOP instruction bytes of specified byte length
        Parameters:
        offset - instruction address offset
        length - length of NOP instruction in bytes
        Throws:
        MemoryAccessException
      • addBytesNOP

        public void addBytesNOP​(java.lang.String addr,
                                int length)
                         throws MemoryAccessException
        Add NOP instruction bytes of specified byte length
        Parameters:
        addr - instruction address
        length - length of NOP instruction in bytes
        Throws:
        MemoryAccessException
      • addBytesFallthrough

        public void addBytesFallthrough​(long offset)
                                 throws MemoryAccessException
        Add simple fall-through (consumes 2-bytes)
        Parameters:
        offset - instruction address offset
        Throws:
        MemoryAccessException
      • addBytesFallthrough

        public void addBytesFallthrough​(java.lang.String addr)
                                 throws MemoryAccessException
        Add simple fall-through (consumes 2-bytes)
        Parameters:
        addr - instruction address
        Throws:
        MemoryAccessException
      • addBytesStore

        public void addBytesStore​(long offset,
                                  int srcRegIndex,
                                  int destRegIndex)
                           throws MemoryAccessException
        Add store indirect (consumes 2-bytes)
        Parameters:
        offset - instruction address offset
        srcRegIndex - source register index (0..15)
        destRegIndex - destination register index (contained indirect memory address) (0..15)
        Throws:
        MemoryAccessException
      • addBytesStore

        public void addBytesStore​(java.lang.String addr,
                                  int srcRegIndex,
                                  int destRegIndex)
                           throws MemoryAccessException
        Add store indirect (consumes 2-bytes)
        Parameters:
        addr - instruction address
        srcRegIndex - source register index (0..15)
        destRegIndex - destination register index (contained indirect memory address) (0..15)
        Throws:
        MemoryAccessException
      • addBytesLoad

        public void addBytesLoad​(long offset,
                                 int srcRegIndex,
                                 int destRegIndex)
                          throws MemoryAccessException
        Add load indirect (consumes 2-bytes)
        Parameters:
        offset - instruction address offset
        srcRegIndex - source register index (contained indirect memory address) (0..15)
        destRegIndex - destination register index (0..15)
        Throws:
        MemoryAccessException
      • addBytesLoad

        public void addBytesLoad​(java.lang.String addr,
                                 int srcRegIndex,
                                 int destRegIndex)
                          throws MemoryAccessException
        Add load indirect (consumes 2-bytes)
        Parameters:
        addr - instruction address
        srcRegIndex - source register index (contained indirect memory address) (0..15)
        destRegIndex - destination register index (0..15)
        Throws:
        MemoryAccessException
      • addBytesMoveImmediate

        public void addBytesMoveImmediate​(long offset,
                                          short imm)
                                   throws MemoryAccessException
        Add move immediate instruction (consumes 2-bytes)
        Parameters:
        offset - instruction offset
        imm - immediate byte value
        Throws:
        MemoryAccessException
      • addBytesMoveImmediate

        public void addBytesMoveImmediate​(java.lang.String addr,
                                          short imm)
                                   throws MemoryAccessException
        Add move immediate instruction (consumes 2-bytes)
        Parameters:
        addr - instruction address
        imm - immediate byte value
        Throws:
        MemoryAccessException
      • addBytesFallthroughSetNoFlowContext

        public void addBytesFallthroughSetNoFlowContext​(long offset,
                                                        int ctxVal)
                                                 throws MemoryAccessException
        Add simple fall-through which sets noflow context value on next instruction (consumes 2-bytes)
        Parameters:
        offset - instruction address offset
        ctxVal - context value (0-15)
        Throws:
        MemoryAccessException
      • addBytesFallthroughSetNoFlowContext

        public void addBytesFallthroughSetNoFlowContext​(java.lang.String addr,
                                                        int ctxVal)
                                                 throws MemoryAccessException
        Add simple fall-through which sets noflow context value on next instruction (consumes 2-bytes)
        Parameters:
        addr - instruction address
        ctxVal - context value (0-15)
        Throws:
        MemoryAccessException
      • addBytesFallthroughSetNoFlowContext

        public void addBytesFallthroughSetNoFlowContext​(long offset,
                                                        int ctxVal,
                                                        long target)
                                                 throws MemoryAccessException
        Add simple fall-through which sets noflow context value on target address (consumes 2-bytes)
        Parameters:
        offset - instruction address offset
        ctxVal - context value (0-15)
        target - context target address offset
        Throws:
        MemoryAccessException
      • addBytesFallthroughSetNoFlowContext

        public void addBytesFallthroughSetNoFlowContext​(java.lang.String addr,
                                                        int ctxVal,
                                                        java.lang.String targetAddr)
                                                 throws MemoryAccessException
        Add simple fall-through which sets noflow context value on target address (consumes 2-bytes)
        Parameters:
        addr - instruction address
        ctxVal - context value (0-15)
        targetAddr - context target address
        Throws:
        MemoryAccessException
      • addBytesFallthroughSetFlowContext

        public void addBytesFallthroughSetFlowContext​(long offset,
                                                      int ctxVal)
                                               throws MemoryAccessException
        Add simple fall-through which sets flowing context value on next instruction (consumes 2-bytes)
        Parameters:
        offset - instruction address offset
        ctxVal - context value (0-15)
        Throws:
        MemoryAccessException
      • addBytesFallthroughSetFlowContext

        public void addBytesFallthroughSetFlowContext​(java.lang.String addr,
                                                      int ctxVal)
                                               throws MemoryAccessException
        Add simple fall-through which sets flowing context value on next instruction (consumes 2-bytes)
        Parameters:
        addr - instruction address
        ctxVal - context value (0-15)
        Throws:
        MemoryAccessException
      • addBytesCall

        public void addBytesCall​(long offset,
                                 long dest)
                          throws MemoryAccessException
        Add call (consumes 2-bytes)
        Parameters:
        offset - instruction address offset
        dest - call destination offset
        Throws:
        MemoryAccessException
      • addBytesCall

        public void addBytesCall​(java.lang.String addr,
                                 java.lang.String destAddr)
                          throws MemoryAccessException
        Add call (consumes 2-bytes)
        Parameters:
        addr - instruction address
        destAddr - call destination address
        Throws:
        MemoryAccessException
      • addBytesCallWithDelaySlot

        public void addBytesCallWithDelaySlot​(long offset,
                                              long dest)
                                       throws MemoryAccessException
        Add call w/ delayslot (consumes 4-bytes)
        Parameters:
        offset - instruction address offset
        dest - call destination offset
        Throws:
        MemoryAccessException
      • addBytesCallWithDelaySlot

        public void addBytesCallWithDelaySlot​(java.lang.String addr,
                                              java.lang.String destAddr)
                                       throws MemoryAccessException
        Add call w/ delayslot (consumes 4-bytes)
        Parameters:
        addr - instruction address
        destAddr - call destination address
        Throws:
        MemoryAccessException
      • addBytesBranch

        public void addBytesBranch​(long offset,
                                   long dest)
                            throws MemoryAccessException
        Add branch (consumes 2-bytes)
        Parameters:
        offset - address offset
        dest - call destination offset
        Throws:
        MemoryAccessException
      • addBytesBranch

        public void addBytesBranch​(java.lang.String addr,
                                   java.lang.String destAddr)
                            throws MemoryAccessException
        Add branch (consumes 2-bytes)
        Parameters:
        addr - instruction address offset
        destAddr - call destination address
        Throws:
        MemoryAccessException
      • addBytesBranchConditional

        public void addBytesBranchConditional​(long offset,
                                              long dest)
                                       throws MemoryAccessException
        Add branch (consumes 2-bytes)
        Parameters:
        offset - instruction address offset
        dest - call destination offset
        Throws:
        MemoryAccessException
      • addBytesBranchConditional

        public void addBytesBranchConditional​(java.lang.String addr,
                                              java.lang.String destAddr)
                                       throws MemoryAccessException
        Add branch (consumes 2-bytes)
        Parameters:
        addr - instruction address
        destAddr - call destination address
        Throws:
        MemoryAccessException
      • addBytesBranchWithDelaySlot

        public void addBytesBranchWithDelaySlot​(long offset,
                                                long dest)
                                         throws MemoryAccessException
        Add branch w/ delay slot (consumes 4-bytes)
        Parameters:
        offset - instruction address offset
        dest - call destination offset
        Throws:
        MemoryAccessException
      • addBytesBranchWithDelaySlot

        public void addBytesBranchWithDelaySlot​(java.lang.String addr,
                                                java.lang.String destAddr)
                                         throws MemoryAccessException
        Add branch w/ delay slot (consumes 4-bytes)
        Parameters:
        addr - instruction address
        destAddr - call destination address
        Throws:
        MemoryAccessException
      • addBytesCopInstruction

        public void addBytesCopInstruction​(long offset)
                                    throws MemoryAccessException
        Add COP instruction for exercising nfctx context (consumes 2-bytes). Location will not be added to defined instruction address list.
        Parameters:
        offset - instruction address offset
        Throws:
        MemoryAccessException
      • addBytesCopInstruction

        public void addBytesCopInstruction​(java.lang.String addr)
                                    throws MemoryAccessException
        Add COP instruction for exercising nfctx context (consumes 2-bytes). Location will not be added to defined instruction address list.
        Parameters:
        addr - instruction address
        Throws:
        MemoryAccessException
      • addBytesBadInstruction

        public void addBytesBadInstruction​(long offset)
                                    throws MemoryAccessException
        Add BAD instruction (consumes 2-bytes). Location will not be added to defined instruction address list.
        Parameters:
        offset - bad instruction address offset
        Throws:
        MemoryAccessException
      • addBytesBadInstruction

        public void addBytesBadInstruction​(java.lang.String addr)
                                    throws MemoryAccessException
        Add BAD instruction (consumes 2-bytes). Location will not be added to defined instruction address list.
        Parameters:
        addr - bad instruction address
        Throws:
        MemoryAccessException
      • createNOPInstruction

        public void createNOPInstruction​(java.lang.String address,
                                         int size)
                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • createCallInstruction

        public void createCallInstruction​(java.lang.String address,
                                          java.lang.String callAddress)
                                   throws java.lang.Exception
        Throws:
        java.lang.Exception
      • createReturnInstruction

        public void createReturnInstruction​(java.lang.String address)
                                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • createJmpInstruction

        public void createJmpInstruction​(java.lang.String address,
                                         java.lang.String destAddress)
                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • createConditionalJmpInstruction

        public void createConditionalJmpInstruction​(java.lang.String address,
                                                    java.lang.String destAddress)
                                             throws java.lang.Exception
        Throws:
        java.lang.Exception
      • createJmpWithDelaySlot

        public void createJmpWithDelaySlot​(java.lang.String address,
                                           java.lang.String destAddress)
                                    throws java.lang.Exception
        Throws:
        java.lang.Exception