Package envi :: Package archs :: Package i386
[hide private]
[frames] | no frames]

Source Code for Package envi.archs.i386

 1   
 2  import envi 
 3  import envi.bits as e_bits 
 4   
 5  #TODO 
 6  # f0 0f c7 4d 00 75 f0 5d 5b - this is NOT right in disasm 
 7   
 8  import copy 
 9  import struct 
10  import traceback 
11   
12  # Gank in our bundled libdisassemble 
13  import opcode86 
14   
15  from envi.archs.i386.regs import * 
16  from envi.archs.i386.disasm import * 
17   
18 -class i386Module(envi.ArchitectureModule):
19
20 - def __init__(self):
21 envi.ArchitectureModule.__init__(self, "i386") 22 self._arch_dis = i386Disasm()
23
24 - def archGetRegCtx(self):
25 return i386RegisterContext()
26
27 - def archGetBreakInstr(self):
28 return "\xcc"
29
30 - def getPointerSize(self):
31 return 4
32
33 - def pointerString(self, va):
34 return "0x%.8x" % va
35
36 - def makeOpcode(self, bytes, offset=0, va=0):
37 """ 38 Parse a sequence of bytes out into an envi.Opcode instance. 39 """ 40 return self._arch_dis.disasm(bytes, offset, va)
41
42 - def getEmulator(self):
43 return IntelEmulator()
44 45 # NOTE: This one must be after the definition of i386Module 46 from envi.archs.i386.emu import * 47