Source code for envi.archs.i386
import envi
import envi.bits as e_bits
#TODO
# f0 0f c7 4d 00 75 f0 5d 5b - this is NOT right in disasm
import copy
import struct
import traceback
# Gank in our bundled libdisassemble
import opcode86
from envi.archs.i386.regs import *
from envi.archs.i386.disasm import *
class i386Module(envi.ArchitectureModule):
[docs]
def __init__(self):
envi.ArchitectureModule.__init__(self, "i386")
self._arch_dis = i386Disasm()
def archGetRegCtx(self):
[docs] return i386RegisterContext()
def archGetBreakInstr(self):
[docs] return "\xcc"
def getPointerSize(self):
[docs] return 4
def pointerString(self, va):
[docs] return "0x%.8x" % va
def makeOpcode(self, bytes, offset=0, va=0):
[docs] """
Parse a sequence of bytes out into an envi.Opcode instance.
"""
return self._arch_dis.disasm(bytes, offset, va)
def getEmulator(self):
[docs] return IntelEmulator()
# NOTE: This one must be after the definition of i386Module
from envi.archs.i386.emu import *