Class RegisterDescriptionEntry

java.lang.Object
com.pnfsoftware.jeb.core.units.code.asm.processor.RegisterDescriptionEntry

public class RegisterDescriptionEntry extends Object
Description of a processor register.
  • Constructor Details

    • RegisterDescriptionEntry

      public RegisterDescriptionEntry(int number, String name, int bitsize, RegisterEncoding encoding, String alternateName, RegisterType type, int offset)
      Full constructor.
      Parameters:
      number - mandatory
      name - mandatory
      bitsize - mandatory
      encoding - optional
      alternateName - optional
      type - optional
      offset - optional
  • Method Details

    • sl

      public RegisterDescriptionEntry sl(String name, int bitstart, int bitend)
      Define a slice of a RegisterDescriptionEntry
      Parameters:
      name -
      bitstart - start bit
      bitend - end bit (excluded)
      Returns:
      the register entry (NOT the defined slice)
    • sl

      public RegisterDescriptionEntry sl(String name, int bitsize)
      Define a slice of a RegisterDescriptionEntry, with bitstart at 0. Use sl(String, int, int) if bitstart is different.
      Parameters:
      name - name of the slice register
      bitsize - bitsize of the slice. Must be <= to current bitsize.
      Returns:
      the register entry (NOT the defined slice)
    • isPhysicalRegister

      public boolean isPhysicalRegister()
    • isRegisterSlice

      public boolean isRegisterSlice()
    • verifyPhysicalRegister

      public void verifyPhysicalRegister()
    • verifyRegisterSlice

      public void verifyRegisterSlice()
    • getContainer

      public RegisterDescriptionEntry getContainer()
    • getNumber

      public int getNumber()
      Get the optional register number used to locate the register in its bank.
      Returns:
    • getId

      public long getId()
      Opaque register id used by processor objects.
      Returns:
      the id
    • getPureId

      public long getPureId()
    • grp

      public RegisterDescriptionEntry grp(int grp, int idx)
      Defines the group from which register belongs.
      Parameters:
      grp -
      idx -
      Returns:
      the register entry (NOT the defined group)
    • getOffset

      public int getOffset()
      Get the optional offset in a block of registers, meaningful in the context of the layout this entry belongs to.
      Returns:
      -1 if unspecified
    • setOffset

      public void setOffset(int offset)
      Parameters:
      offset -
    • getName

      public String getName()
      Get the primary name.
      Returns:
      non-null, non-empty
    • getNames

      public List<String> getNames()
      Get all the names for the register. The first entry in the list is the primary name.
      Returns:
      a list containing at least one entry
    • hasName

      public boolean hasName(String candidateName)
      Determine if this register uses the provided name (case-insensitive).
      Parameters:
      candidateName -
      Returns:
    • hasName

      public boolean hasName(String candidateName, boolean caseSensitive)
      Determine if this register uses the provided name.
      Parameters:
      candidateName -
      caseSensitive -
      Returns:
    • hasName

      public boolean hasName(Collection<String> candidateNames)
      Determine if this register uses any of the provided names (case-insensitive).
      Parameters:
      candidateNames -
      Returns:
    • hasName

      public boolean hasName(Collection<String> candidateNames, boolean caseSensitive)
      Determine if this register uses any of the provided names.
      Parameters:
      candidateNames -
      caseSensitive -
      Returns:
    • addName

      public RegisterDescriptionEntry addName(String name)
      Add a name for this register.
      Parameters:
      name - a name, cannot be empty or null; it can be a primary name or an alternate name
      Returns:
      this object (allows chained calls)
    • getBitsize

      public int getBitsize()
      Get the register size in bits.
      Returns:
    • getBitstart

      public int getBitstart()
    • getBitend

      public int getBitend()
    • getSlices

      public List<RegisterDescriptionEntry> getSlices()
    • getSlice

      public RegisterDescriptionEntry getSlice(int bitstart, int bitend)
    • getSize

      public int getSize()
      Get the register size in bytes, rounded up (eg, if the register is 6-bit long, the returned byte size will be 1).
      Returns:
    • getEncoding

      public RegisterEncoding getEncoding()
      Returns:
      never null
    • enc

    • getType

      public RegisterType getType()
      Returns:
      never null
    • typ

      Parameters:
      type -
      Returns:
      the register entry (NOT the defined type)
    • toString

      public String toString()
      Overrides:
      toString in class Object