Package envi :: Package archs :: Package arm :: Module emu :: Class ArmEmulator
[hide private]
[frames] | no frames]

Class ArmEmulator

source code

       ArchitectureModule --+    
                            |    
                    ArmModule --+
                                |
registers.RegisterContext --+   |
                            |   |
      regs.ArmRegisterContext --+
                                |
registers.RegisterContext --+   |
                            |   |
       memory.IMemory --+   |   |
                        |   |   |
      memory.MemoryObject --+   |
                            |   |
                     Emulator --+
                                |
                               ArmEmulator

Instance Methods [hide private]
 
__init__(self)
Hand in a register definition which consists of a list of (<name>, <width>) tuples.
source code
 
undefFlags(self)
Used in PDE.
source code
 
setFlag(self, which, state, mode=16) source code
 
getFlag(self, which, mode=16) source code
 
readMemValue(self, addr, size) source code
 
writeMemValue(self, addr, value, size) source code
 
readMemSignedValue(self, addr, size) source code
 
executeOpcode(self, op)
This is the core method for the
source code
 
doPush(self, val) source code
 
doPop(self) source code
 
getProcMode(self) source code
 
getCPSR(self) source code
 
setCPSR(self, psr) source code
 
getSPSR(self, mode) source code
 
setSPSR(self, mode, psr) source code
 
setProcMode(self, mode) source code
 
getRegister(self, index, mode=None)
Return the current value of the specified register index.
source code
 
setRegister(self, index, value, mode=None)
Set a register value by index.
source code
 
integerSubtraction(self, op)
Do the core of integer subtraction but only *return* the resulting value rather than assigning it.
source code
 
intSubBase(self, src1, src2, Sflag=0, rd=0) source code
 
logicalAnd(self, op) source code
 
i_and(self, op) source code
 
i_stm(self, op) source code
 
i_stmia(self, op) source code
 
i_ldm(self, op) source code
 
i_ldmia(self, op) source code
 
i_ldr(self, op) source code
 
i_add(self, op) source code
 
i_b(self, op) source code
 
i_bl(self, op) source code
 
i_tst(self, op) source code
 
i_rsb(self, op) source code
 
i_sub(self, op) source code
 
i_eor(self, op) source code
 
i_stc(self, op) source code
 
i_ldc(self, op) source code
 
i_cdp(self, op) source code
 
i_mrc(self, op) source code
 
i_mrrc(self, op) source code
 
i_mcr(self, op) source code
 
i_mcrr(self, op) source code

Inherited from ArmModule: archGetBreakInstr, archGetRegCtx, getEmulator, getPointerSize, makeOpcode, pointerString, setModeThumb

Inherited from registers.RegisterContext: addMetaRegister, getMetaRegInfo, getProgramCounter, getRegDef, getRegisterByName, getRegisterIndex, getRegisterInfo, getRegisterName, getRegisterNameIndexes, getRegisterNames, getRegisterSnap, getRegisterWidth, getRegisters, getStackCounter, isDirty, isMetaRegister, loadRegDef, loadRegMetas, reprRegister, setIsDirty, setProgramCounter, setRegisterByName, setRegisterIndexes, setRegisterInfo, setRegisterSnap, setRegisters, setStackCounter

Inherited from Emulator: addCallingConvention, getArchModule, getCallArgs, getCallingConvention, getCallingConventions, getEmuSnap, getOperAddr, getOperValue, getSegmentIndex, getSegmentInfo, hasCallingConvention, run, setEmuSnap, setOperValue, setReturnValue, setSegmentInfo, stepi

Inherited from memory.MemoryObject: addMemoryMap, getByteDef, getMemoryMap, getMemoryMaps, getMemorySnap, readMemory, setMemorySnap, writeMemory

Inherited from memory.IMemory: allocateMemory, isExecutable, isReadable, isShared, isValidPointer, isWriteable, parseOpcode, probeMemory, protectMemory, readMemoryFormat, searchMemory, searchMemoryRange, writeMemoryFormat

Method Details [hide private]

__init__(self)
(Constructor)

source code 

Hand in a register definition which consists of a list of (<name>, <width>) tuples.

Overrides: memory.IMemory.__init__

undefFlags(self)

source code 

Used in PDE. A flag setting operation has resulted in un-defined value. Set the flags to un-defined as well.

readMemValue(self, addr, size)

source code 
Overrides: memory.IMemory.readMemValue

executeOpcode(self, op)

source code 

This is the core method for the

Overrides: Emulator.executeOpcode
(inherited documentation)

getRegister(self, index, mode=None)

source code 

Return the current value of the specified register index.

Overrides: registers.RegisterContext.getRegister

setRegister(self, index, value, mode=None)

source code 

Set a register value by index.

Overrides: registers.RegisterContext.setRegister

integerSubtraction(self, op)

source code 

Do the core of integer subtraction but only *return* the resulting value rather than assigning it. (allows cmp and sub to use the same code)