mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 19:42:36 +02:00
GP-25_emteere_StoredProgramRegisters code review changes
This commit is contained in:
parent
9c7c0d4492
commit
1fc5d70c48
2 changed files with 17 additions and 15 deletions
|
@ -354,7 +354,7 @@ public class ProgramRegisterContextDB extends AbstractStoredProgramContext imple
|
|||
|
||||
registers = newLanguage.getRegisters();
|
||||
baseContextRegister = newLanguage.getContextBaseRegister();
|
||||
initRegisterMap();
|
||||
init();
|
||||
|
||||
registerValueMap.clear();
|
||||
initializedCurrentValues();
|
||||
|
|
|
@ -38,7 +38,7 @@ abstract public class AbstractProgramContext implements ProgramContext, DefaultP
|
|||
protected AbstractProgramContext(Register[] registers) {
|
||||
this.registers = registers;
|
||||
|
||||
initRegisterMap();
|
||||
init();
|
||||
|
||||
if (baseContextRegister != null) {
|
||||
nonFlowingContextRegisterMask = baseContextRegister.getBaseMask().clone();
|
||||
|
@ -109,12 +109,13 @@ abstract public class AbstractProgramContext implements ProgramContext, DefaultP
|
|||
return value.clearBitValues(flowingContextRegisterMask);
|
||||
}
|
||||
|
||||
protected void initRegisterMap() {
|
||||
protected void init() {
|
||||
registerNameMap = null;
|
||||
baseContextRegister = null;
|
||||
for (Register register : registers) {
|
||||
if (register.isProcessorContext()) {
|
||||
baseContextRegister = register.getBaseRegister();
|
||||
break; // should only be one
|
||||
}
|
||||
}
|
||||
if (baseContextRegister == null) {
|
||||
|
@ -124,7 +125,11 @@ abstract public class AbstractProgramContext implements ProgramContext, DefaultP
|
|||
defaultDisassemblyContext = new RegisterValue(baseContextRegister);
|
||||
}
|
||||
|
||||
private void initRegisterNameMap() {
|
||||
private Map<String, Register> getRegisterNameMap() {
|
||||
// if register map hasn't been initialized, initialize it
|
||||
if (registerNameMap == null) {
|
||||
registerNameMap = new HashMap<String, Register>();
|
||||
|
||||
// NOTE: if you want upper case names recognized, override this method and add them
|
||||
for (Register register : registers) {
|
||||
registerNameMap.put(register.getName(), register);
|
||||
|
@ -133,6 +138,8 @@ abstract public class AbstractProgramContext implements ProgramContext, DefaultP
|
|||
}
|
||||
}
|
||||
}
|
||||
return registerNameMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Register[] getProcessorStateRegisters() {
|
||||
|
@ -147,12 +154,7 @@ abstract public class AbstractProgramContext implements ProgramContext, DefaultP
|
|||
|
||||
@Override
|
||||
public final Register getRegister(String name) {
|
||||
// if register map hasn't been initialized, initialize it
|
||||
if (registerNameMap == null) {
|
||||
registerNameMap = new HashMap<String, Register>();
|
||||
initRegisterNameMap();
|
||||
}
|
||||
Register reg = registerNameMap.get(name);
|
||||
Register reg = getRegisterNameMap().get(name);
|
||||
return reg;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue