Interface Language

  • All Known Implementing Classes:
    SleighLanguage

    public interface Language
    • Method Detail

      • getLanguageID

        LanguageID getLanguageID()
        Returns the LanguageID of this language, which is used as a primary key to find the language when Ghidra loads it.
        Returns:
        the LanguageID of this language
      • getLanguageDescription

        LanguageDescription getLanguageDescription()
        Returns the LanguageDescription of this language, which contains useful information about the characteristics of the language.
        Returns:
        the LanguageDescription of this language
      • getParallelInstructionHelper

        ParallelInstructionLanguageHelper getParallelInstructionHelper()
        Returns a parallel instruction helper for this language or null if one has not been defined.
        Returns:
        parallel instruction helper or null if not applicable
      • getProcessor

        Processor getProcessor()
        Returns the processor name on which this language is based. For example, 30386, Pentium, 68010, etc.
        Returns:
        the processor name
      • getVersion

        int getVersion()
        Returns the major version for this language. Returning a version number different than before could cause the program to try and "update" itself. Those languages which do not support this feature may always return a constant value of 1.
        Returns:
        the language version number
      • getMinorVersion

        int getMinorVersion()
        Returns the minor version for this language. Returning a minor version number different than before could cause the program to try and "update" itself. Those languages which do not support this feature may always return a constant value of 0.
        Returns:
        the language minor version number
      • getAddressFactory

        AddressFactory getAddressFactory()
        Get the AddressFactory for this language. The returned Address factory will allow addresses associated with physical, constant and unique spaces to be instantiated. NOTE! this factory does not know about compiler or program specified spaces. Spaces such as stack and overlay spaces are not defined by the language - if these are needed, Program.getAddressFactory() should be used instead.
        Returns:
        the AddressFactory for this language.
        See Also:
        Program.getAddressFactory()
      • getDefaultSpace

        AddressSpace getDefaultSpace()
        Get the default memory/code space.
        Returns:
        default address space
      • getDefaultDataSpace

        AddressSpace getDefaultDataSpace()
        Get the preferred data space used by loaders for data sections.
        Returns:
        default data address space
      • isBigEndian

        boolean isBigEndian()
        get the Endian type for this language. (If a language supports both, then this returns an initial or default value.)
        Returns:
        true for BigEndian, false for LittleEndian.
      • getInstructionAlignment

        int getInstructionAlignment()
        Get instruction alignment in terms of bytes.
        Returns:
        instruction alignment
      • supportsPcode

        boolean supportsPcode()
        Return true if the instructions in this language support Pcode.
      • isVolatile

        boolean isVolatile​(Address addr)
        Returns true if the language has defined the specified location as volatile.
        Parameters:
        addr - location address
      • parse

        InstructionPrototype parse​(MemBuffer buf,
                                   ProcessorContext context,
                                   boolean inDelaySlot)
                            throws InsufficientBytesException,
                                   UnknownInstructionException
        Get the InstructionPrototype that matches the bytes presented by the MemBuffer object.
        Parameters:
        buf - the MemBuffer that presents the bytes in Memory at some address as if they were an array of bytes starting at index 0.
        context - the processor context at the address to be disassembled
        inDelaySlot - true if this instruction should be parsed as if it were in a delay slot
        Returns:
        the InstructionPrototype that matches the bytes in buf.
        Throws:
        InsufficientBytesException - thrown if there are not enough bytes in memory to satisfy a legal instruction.
        UnknownInstructionException - thrown if the byte pattern does not match any legal instruction.
      • getNumberOfUserDefinedOpNames

        int getNumberOfUserDefinedOpNames()
        Get the total number of user defined pcode names. Note: only works for Pcode based languages
      • getUserDefinedOpName

        java.lang.String getUserDefinedOpName​(int index)
        Get the user define name for a given index. Certain pcode has operations defined only by name that when the pcode returns, only the index is known. Note: only works for Pcode based languages
      • getRegisters

        Register[] getRegisters​(Address address)
        Returns all the registers (each different size is a different register) for an address.
        Parameters:
        address - the register address for which to return all registers.
        Returns:
        all the registers (each different size is a different register) for an address.
      • getRegister

        Register getRegister​(AddressSpace addrspc,
                             long offset,
                             int size)
        Get a register given the address space it is in, its offset in the space and its size.
        Parameters:
        addrspc - address space the register is in
        offset - offset of the register in the space
        size - size of the register in bytes
        Returns:
        the register
      • getRegisters

        Register[] getRegisters()
        get the array of Register objects that this language supports.
        Returns:
        the array of processor registers.
      • getRegister

        Register getRegister​(java.lang.String name)
        Get a register given the name of the register
        Parameters:
        name - Register name
        Returns:
        the register
      • getRegister

        Register getRegister​(Address addr,
                             int size)
        Get a register given it's underlying address location and size.
        Parameters:
        addr - location of the register in its address space
        size - the size of the register (in bytes). A value of 0 will return the largest register at the specified addr
        Returns:
        the register
      • getDefaultLabels

        java.util.List<AddressLabelInfo> getDefaultLabels()
        Return the list of labels for well-known locations.
        Returns:
        AddressLabelPair[] empty array if there are no labels
      • getProgramCounter

        Register getProgramCounter()
        Get the default program counter register for this language if there is one.
        Returns:
        default program counter register.
      • getContextBaseRegister

        Register getContextBaseRegister()
        Returns context base register or null if one has not been defined by the language.
      • getDefaultMemoryBlocks

        MemoryBlockDefinition[] getDefaultMemoryBlocks()
        Returns the default memory blocks for this language.
        Returns:
        the default memory blocks for this language
      • getDefaultSymbols

        java.util.List<AddressLabelInfo> getDefaultSymbols()
        Returns the default symbols for this language.
        Returns:
        the default symbols for this language
      • getSegmentedSpace

        java.lang.String getSegmentedSpace()
        Returns the name of the segmented space for this language, or the empty string if the memory model for this language is not segmented.
        Returns:
        the name of the segmented space or ""
      • getVolatileAddresses

        AddressSetView getVolatileAddresses()
        Returns an AddressSetView of the volatile addresses for this language
        Returns:
        an AddressSetView of the volatile addresses for this language
      • applyContextSettings

        void applyContextSettings​(DefaultProgramContext ctx)
        Apply context settings to the ProgramContext as specified by the configuration
        Parameters:
        ctx - is the default program context
      • reloadLanguage

        void reloadLanguage​(TaskMonitor taskMonitor)
                     throws java.io.IOException
        Refreshes the definition of this language if possible (statically defined languages can safely do nothing).
        Parameters:
        taskMonitor - monitor for progress back to the user
        Throws:
        java.io.IOException
      • getCompatibleCompilerSpecDescriptions

        java.util.List<CompilerSpecDescription> getCompatibleCompilerSpecDescriptions()
        Returns a list of all compatible compiler spec descriptions. The first item in the list is the default.
      • getDefaultCompilerSpec

        CompilerSpec getDefaultCompilerSpec()
        Returns the default compiler spec for this language, which is used when a loader cannot determine the compiler spec or for upgrades when a program had no compiler spec registered (seriously old program, like Ghidra 4.1 or earlier). NOTE: this has NOTHING to do with the compiler spec registered for a program. Use Program.getCompilerSpec() for that!
        Returns:
        the default compiler spec for this language
      • hasProperty

        boolean hasProperty​(java.lang.String key)
        Returns whether this lanugage has a property defined.
        Parameters:
        key - the property key
        Returns:
        if the property is defined
      • getPropertyAsInt

        int getPropertyAsInt​(java.lang.String key,
                             int defaultInt)
        Gets the value of a property as an int, returning defaultInt if undefined.
        Parameters:
        key - the property key
        defaultInt - the default value to return if property is undefined
        Returns:
        the property value as an int, or the default value if undefined
      • getPropertyAsBoolean

        boolean getPropertyAsBoolean​(java.lang.String key,
                                     boolean defaultBoolean)
        Gets the value of a property as a boolean, returning defaultBoolean if undefined.
        Parameters:
        key - the property key
        defaultBoolean - the default value to return if property is undefined
        Returns:
        the property value as a boolean, or the default value if undefined
      • getProperty

        java.lang.String getProperty​(java.lang.String key,
                                     java.lang.String defaultString)
        Gets the value of a property as a String, returning defaultString if undefined.
        Parameters:
        key - the property key
        defaultString - the default value to return if property is undefined
        Returns:
        the property value as a String, or the default value if undefined
      • getProperty

        java.lang.String getProperty​(java.lang.String key)
        Gets a property defined for this language, or null if that property isn't defined.
        Parameters:
        key - the property key
        Returns:
        the property value, or null if not defined
      • getPropertyKeys

        java.util.Set<java.lang.String> getPropertyKeys()
        Returns a read-only set view of the property keys defined on this language.
        Returns:
        read-only set of property keys
      • hasManual

        boolean hasManual()
        Returns whether the language has a valid manual defined.
        Returns:
        if the language has a manual
      • getManualEntry

        ManualEntry getManualEntry​(java.lang.String instructionMnemonic)
        Get the ManualEntry for the given instruction mnemonic.
        Parameters:
        instruction - the instruction mnemonic
        Returns:
        the ManualEntry or null if instruction mnemonic not found
      • getManualInstructionMnemonicKeys

        java.util.Set<java.lang.String> getManualInstructionMnemonicKeys()
        Returns a read-only set view of the instruction mnemonic keys defined on this language.
        Returns:
        read-only set of instruction mnemonic keys
      • getManualException

        java.lang.Exception getManualException()
        Returns the exception generated trying to load the manual, or null if it succeeded.
        Returns:
        the exception generated trying to load the manual, or null if it succeeded
      • getSortedVectorRegisters

        Register[] getSortedVectorRegisters()
        Returns the array of vector registers, sorted first by size and then by name.
        Returns:
        sorted array of vector registers.