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 int
Group for general-purpose registers: always 0.static final int
Group for non-GP registers and registers not fitting in other user-created groups. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static RegisterDescriptionEntry
add
(Map<Integer, RegisterDescriptionEntry> entries, int bitsize, String name) Creates aRegisterDescriptionEntry
based on its name and its bitsizeprotected static RegisterDescriptionEntry
protected static RegisterDescriptionEntry
add
(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.int
Get 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 aRegisterDescriptionEntry
based on its name and its bitsize- Parameters:
entries
- global mapbitsize
- bitsize of the registername
- name of the register- Returns:
-
getDescriptionEntries
Description copied from interface:IRegisterBank
Get the list of full register entries. Slices are not returned.- Specified by:
getDescriptionEntries
in interfaceIRegisterBank
- Returns:
-
getDescriptionEntryMap
- Returns:
- a map of full registers: key=index, value=full register entry
-
getDescriptionEntry
Description copied from interface:IRegisterBank
Get a full register entry by index (do not confuse with id). Slices cannot be retrieved.- Specified by:
getDescriptionEntry
in interfaceIRegisterBank
- Returns:
-
getCountOfDescriptionEntries
public int getCountOfDescriptionEntries()Description copied from interface:IRegisterBank
Get the number of fill register entries. Slices are not counted.- Specified by:
getCountOfDescriptionEntries
in interfaceIRegisterBank
- Returns:
-
getAllDescriptionEntries
Description copied from interface:IRegisterBank
Get the list of all (full and slices) register entries.- Specified by:
getAllDescriptionEntries
in interfaceIRegisterBank
- Returns:
-
getDescriptionEntryByName
Description copied from interface:IRegisterBank
Get a register entry (full or slice) by name.- Specified by:
getDescriptionEntryByName
in interfaceIRegisterBank
- Returns:
-
getDescriptionEntryByName
Description copied from interface:IRegisterBank
Get a register entry (full or slice) by name, using a list of candidate names. Useful when a register goes by different names.- Specified by:
getDescriptionEntryByName
in interfaceIRegisterBank
- Parameters:
names
- candidate names- Returns:
-
getDescriptionEntryById
Description copied from interface:IRegisterBank
Get a register entry (full or slice) by id (do not confuse with index).- Specified by:
getDescriptionEntryById
in interfaceIRegisterBank
- Returns:
-
getDescriptionEntryByType
Description copied from interface:IRegisterBank
Get a full register entry by type. Slices cannot be retrieved.- Specified by:
getDescriptionEntryByType
in interfaceIRegisterBank
- Returns:
-
toString
-
format
Description copied from interface:IRegisterBank
Format the register bank as a string.- Specified by:
format
in interfaceIRegisterBank
- Parameters:
type
- 0: short-form (i.e.,#toString()
), 1: user-friendly long-form- Returns:
- the formatted bank
-