Class AbstractRegisterBank
java.lang.Object
com.pnfsoftware.jeb.core.units.code.asm.processor.arch.AbstractRegisterBank
- All Implemented Interfaces:
IRegisterBank
- Direct Known Subclasses:
AbstractRegisterBank2,RegisterBankArm,RegisterBankArm64,RegisterBankDummy1,RegisterBankEmpty,RegisterBankMips,RegisterBankMips64,RegisterBankX64,RegisterBankX86
Base implementation of a registers bank layout.
It is preferable to use AbstractRegisterBank2 to define register banks.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intGroup for general-purpose registers: always 0.static final intGroup for non-GP registers and registers not fitting in other user-created groups. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static RegisterDescriptionEntryadd(Map<Integer, RegisterDescriptionEntry> entries, int bitsize, String name) Creates aRegisterDescriptionEntrybased on its name and its bitsizeprotected static RegisterDescriptionEntryprotected static RegisterDescriptionEntryadd(Map<Integer, RegisterDescriptionEntry> entries, int bitsize, String name, String altname, RegisterEncoding encoding, RegisterType type) format(int type) Format the register bank as a string.Get the list of all (full and slices) register entries.intGet the number of fill register entries.Get the list of full register entries.getDescriptionEntry(int regnum) Get a full register entry by index (do not confuse with id).getDescriptionEntryById(long id) Get a register entry (full or slice) by id (do not confuse with index).Get a register entry (full or slice) by name.Get a register entry (full or slice) by name, using a list of candidate names.Get a full register entry by type.abstract Map<Integer,RegisterDescriptionEntry> toString()
-
Field Details
-
REG_GRP_GP
public static final int REG_GRP_GPGroup for general-purpose registers: always 0.- See Also:
-
REG_GRP_SPECIAL
public static final int REG_GRP_SPECIALGroup for non-GP registers and registers not fitting in other user-created groups.- See Also:
-
-
Constructor Details
-
AbstractRegisterBank
public AbstractRegisterBank()
-
-
Method Details
-
add
protected static RegisterDescriptionEntry add(Map<Integer, RegisterDescriptionEntry> entries, int bitsize, String name, String altname, RegisterEncoding encoding, RegisterType type) -
add
protected static RegisterDescriptionEntry add(Map<Integer, RegisterDescriptionEntry> entries, int bitsize, String name, String altname) -
add
protected static RegisterDescriptionEntry add(Map<Integer, RegisterDescriptionEntry> entries, int bitsize, String name) Creates aRegisterDescriptionEntrybased on its name and its bitsize- Parameters:
entries- global mapbitsize- bitsize of the registername- name of the register- Returns:
-
getDescriptionEntries
Description copied from interface:IRegisterBankGet the list of full register entries. Slices are not returned.- Specified by:
getDescriptionEntriesin interfaceIRegisterBank- Returns:
-
getDescriptionEntryMap
- Returns:
- a map of full registers: key=index, value=full register entry
-
getDescriptionEntry
Description copied from interface:IRegisterBankGet a full register entry by index (do not confuse with id). Slices cannot be retrieved.- Specified by:
getDescriptionEntryin interfaceIRegisterBank- Returns:
-
getCountOfDescriptionEntries
public int getCountOfDescriptionEntries()Description copied from interface:IRegisterBankGet the number of fill register entries. Slices are not counted.- Specified by:
getCountOfDescriptionEntriesin interfaceIRegisterBank- Returns:
-
getAllDescriptionEntries
Description copied from interface:IRegisterBankGet the list of all (full and slices) register entries.- Specified by:
getAllDescriptionEntriesin interfaceIRegisterBank- Returns:
-
getDescriptionEntryByName
Description copied from interface:IRegisterBankGet a register entry (full or slice) by name.- Specified by:
getDescriptionEntryByNamein interfaceIRegisterBank- Returns:
-
getDescriptionEntryByName
Description copied from interface:IRegisterBankGet a register entry (full or slice) by name, using a list of candidate names. Useful when a register goes by different names.- Specified by:
getDescriptionEntryByNamein interfaceIRegisterBank- Parameters:
names- candidate names- Returns:
-
getDescriptionEntryById
Description copied from interface:IRegisterBankGet a register entry (full or slice) by id (do not confuse with index).- Specified by:
getDescriptionEntryByIdin interfaceIRegisterBank- Returns:
-
getDescriptionEntryByType
Description copied from interface:IRegisterBankGet a full register entry by type. Slices cannot be retrieved.- Specified by:
getDescriptionEntryByTypein interfaceIRegisterBank- Returns:
-
toString
-
format
Description copied from interface:IRegisterBankFormat the register bank as a string.- Specified by:
formatin interfaceIRegisterBank- Parameters:
type- 0: short-form (i.e.,#toString()), 1: user-friendly long-form- Returns:
- the formatted bank
-