Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Classes | Namespaces | Functions | Variables
arch.py File Reference

Go to the source code of this file.

Classes

class  miasm2.arch.x86.arch.r_al
 
class  miasm2.arch.x86.arch.r_ax
 
class  miasm2.arch.x86.arch.r_dx
 
class  miasm2.arch.x86.arch.r_eax
 
class  miasm2.arch.x86.arch.r_rax
 
class  miasm2.arch.x86.arch.r_cl
 
class  miasm2.arch.x86.arch.group
 
class  miasm2.arch.x86.arch.additional_info
 
class  miasm2.arch.x86.arch.instruction_x86
 
class  miasm2.arch.x86.arch.mn_x86
 
class  miasm2.arch.x86.arch.bs_modname_size
 
class  miasm2.arch.x86.arch.bs_modname_jecx
 
class  miasm2.arch.x86.arch.bs_modname_mode
 
class  miasm2.arch.x86.arch.x86_imm
 
class  miasm2.arch.x86.arch.x86_imm_fix
 
class  miasm2.arch.x86.arch.x86_08
 
class  miasm2.arch.x86.arch.x86_16
 
class  miasm2.arch.x86.arch.x86_32
 
class  miasm2.arch.x86.arch.x86_64
 
class  miasm2.arch.x86.arch.x86_08_ne
 
class  miasm2.arch.x86.arch.x86_16_ne
 
class  miasm2.arch.x86.arch.x86_32_ne
 
class  miasm2.arch.x86.arch.x86_64_ne
 
class  miasm2.arch.x86.arch.x86_s08to16
 
class  miasm2.arch.x86.arch.x86_s08to32
 
class  miasm2.arch.x86.arch.x86_s08to64
 
class  miasm2.arch.x86.arch.x86_s32to64
 
class  miasm2.arch.x86.arch.bs_eax
 
class  miasm2.arch.x86.arch.bs_seg
 
class  miasm2.arch.x86.arch.bs_edx
 
class  miasm2.arch.x86.arch.bs_st
 
class  miasm2.arch.x86.arch.bs_cs
 
class  miasm2.arch.x86.arch.bs_ds
 
class  miasm2.arch.x86.arch.bs_es
 
class  miasm2.arch.x86.arch.bs_ss
 
class  miasm2.arch.x86.arch.bs_fs
 
class  miasm2.arch.x86.arch.bs_gs
 
class  miasm2.arch.x86.arch.x86_reg_st
 
class  miasm2.arch.x86.arch.bs_sib_scale
 
class  miasm2.arch.x86.arch.bs_sib_index
 
class  miasm2.arch.x86.arch.bs_sib_base
 
class  miasm2.arch.x86.arch.bs_disp
 
class  miasm2.arch.x86.arch.x86_rm_arg
 
class  miasm2.arch.x86.arch.x86_rm_w8
 
class  miasm2.arch.x86.arch.x86_rm_sx
 
class  miasm2.arch.x86.arch.x86_rm_sxd
 
class  miasm2.arch.x86.arch.x86_rm_sd
 
class  miasm2.arch.x86.arch.x86_rm_wd
 
class  miasm2.arch.x86.arch.x86_rm_m64
 
class  miasm2.arch.x86.arch.x86_rm_m80
 
class  miasm2.arch.x86.arch.x86_rm_m08
 
class  miasm2.arch.x86.arch.x86_rm_m16
 
class  miasm2.arch.x86.arch.x86_rm_mm
 
class  miasm2.arch.x86.arch.x86_rm_mm_m64
 
class  miasm2.arch.x86.arch.x86_rm_xmm
 
class  miasm2.arch.x86.arch.x86_rm_xmm_m32
 
class  miasm2.arch.x86.arch.x86_rm_xmm_m64
 
class  miasm2.arch.x86.arch.x86_rm_reg_noarg
 
class  miasm2.arch.x86.arch.x86_rm_reg_mm
 
class  miasm2.arch.x86.arch.x86_rm_reg_xmm
 
class  miasm2.arch.x86.arch.x86_rm_reg
 
class  miasm2.arch.x86.arch.x86_reg
 
class  miasm2.arch.x86.arch.x86_reg_noarg
 
class  miasm2.arch.x86.arch.x86_rm_segm
 
class  miasm2.arch.x86.arch.x86_rm_cr
 
class  miasm2.arch.x86.arch.x86_rm_dr
 
class  miasm2.arch.x86.arch.x86_rm_flt
 
class  miasm2.arch.x86.arch.bs_fbit
 
class  miasm2.arch.x86.arch.bs_cl1
 
class  miasm2.arch.x86.arch.bs_cond_scale
 
class  miasm2.arch.x86.arch.bs_cond_index
 
class  miasm2.arch.x86.arch.bs_cond_disp
 
class  miasm2.arch.x86.arch.bs_cond_imm
 
class  miasm2.arch.x86.arch.bs_cond_imm64
 
class  miasm2.arch.x86.arch.bs_rel_off
 
class  miasm2.arch.x86.arch.bs_s08
 
class  miasm2.arch.x86.arch.bs_rel_off08
 
class  miasm2.arch.x86.arch.bs_moff
 
class  miasm2.arch.x86.arch.bs_movoff
 
class  miasm2.arch.x86.arch.bs_msegoff
 
class  miasm2.arch.x86.arch.field_size
 
class  miasm2.arch.x86.arch.bs_mem
 
class  miasm2.arch.x86.arch.bs_op_mode
 
class  miasm2.arch.x86.arch.bs_ad_mode
 
class  miasm2.arch.x86.arch.bs_op_mode_no64
 
class  miasm2.arch.x86.arch.bs_op_mode64
 
class  miasm2.arch.x86.arch.bs_op_modeno64
 

Namespaces

 miasm2.arch.x86.arch
 

Functions

def miasm2.arch.x86.arch.reg2exprid
 
def miasm2.arch.x86.arch.parse_deref_reg
 
def miasm2.arch.x86.arch.parse_deref_int
 
def miasm2.arch.x86.arch.parse_deref_regint
 
def miasm2.arch.x86.arch.parse_deref_regreg
 
def miasm2.arch.x86.arch.parse_deref_regregint
 
def miasm2.arch.x86.arch.parse_deref_reg_intmreg
 
def miasm2.arch.x86.arch.parse_deref_reg_intmreg_int
 
def miasm2.arch.x86.arch.parse_deref_intmreg
 
def miasm2.arch.x86.arch.parse_deref_intmregint
 
def miasm2.arch.x86.arch.getreg
 
def miasm2.arch.x86.arch.parse_deref_ptr
 
def miasm2.arch.x86.arch.parse_deref_segmoff
 
def miasm2.arch.x86.arch.ast_id2expr
 
def miasm2.arch.x86.arch.ast_int2expr
 
def miasm2.arch.x86.arch.parse_deref_mem
 
def miasm2.arch.x86.arch.opmode_prefix
 
def miasm2.arch.x86.arch.admode_prefix
 
def miasm2.arch.x86.arch.v_opmode_info
 
def miasm2.arch.x86.arch.v_opmode
 
def miasm2.arch.x86.arch.v_admode_info
 
def miasm2.arch.x86.arch.v_admode
 
def miasm2.arch.x86.arch.offsize
 
def miasm2.arch.x86.arch.get_prefix
 
def miasm2.arch.x86.arch.getmodrm
 
def miasm2.arch.x86.arch.setmodrm
 
def miasm2.arch.x86.arch.sib
 
def miasm2.arch.x86.arch.gen_modrm_form
 
def miasm2.arch.x86.arch.exprfindmod
 
def miasm2.arch.x86.arch.test_addr_size
 
def miasm2.arch.x86.arch.parse_mem
 
def miasm2.arch.x86.arch.expr2modrm
 
def miasm2.arch.x86.arch.modrm2expr
 
def miasm2.arch.x86.arch.sib_cond
 
def miasm2.arch.x86.arch.rmmod
 
def miasm2.arch.x86.arch.addop
 
def miasm2.arch.x86.arch.print_size
 MMX/SSE/AVX operations  Categories are the same than here: https://software.intel.com/sites/landingpage/IntrinsicsGuide/. More...
 

Variables

tuple miasm2.arch.x86.arch.log = logging.getLogger("x86_arch")
 
tuple miasm2.arch.x86.arch.console_handler = logging.StreamHandler()
 
list miasm2.arch.x86.arch.conditional_branch
 
list miasm2.arch.x86.arch.unconditional_branch = ['JMP', 'JMPF']
 
string miasm2.arch.x86.arch.f_isad = "AD"
 
string miasm2.arch.x86.arch.f_s08 = "S08"
 
string miasm2.arch.x86.arch.f_u08 = "U08"
 
string miasm2.arch.x86.arch.f_s16 = "S16"
 
string miasm2.arch.x86.arch.f_u16 = "U16"
 
string miasm2.arch.x86.arch.f_s32 = "S32"
 
string miasm2.arch.x86.arch.f_u32 = "U32"
 
string miasm2.arch.x86.arch.f_s64 = "S64"
 
string miasm2.arch.x86.arch.f_u64 = "U64"
 
string miasm2.arch.x86.arch.f_imm = 'IMM'
 
dictionary miasm2.arch.x86.arch.f_imm2size
 
dictionary miasm2.arch.x86.arch.size2gpregs
 
dictionary miasm2.arch.x86.arch.replace_regs64
 
dictionary miasm2.arch.x86.arch.replace_regs32
 
dictionary miasm2.arch.x86.arch.replace_regs16
 
dictionary miasm2.arch.x86.arch.replace_regs
 
tuple miasm2.arch.x86.arch.PLUS = Suppress("+")
 
tuple miasm2.arch.x86.arch.MULT = Suppress("*")
 
tuple miasm2.arch.x86.arch.COLON = Suppress(":")
 
tuple miasm2.arch.x86.arch.LBRACK = Suppress("[")
 
tuple miasm2.arch.x86.arch.RBRACK = Suppress("]")
 
tuple miasm2.arch.x86.arch.dbreg = Group(gpregs16.parser | gpregs32.parser | gpregs64.parser)
 
tuple miasm2.arch.x86.arch.gpreg
 
tuple miasm2.arch.x86.arch.my_var_parser = parse_ast(ast_id2expr, ast_int2expr)
 
 miasm2.arch.x86.arch.int_or_expr = base_expr
 
tuple miasm2.arch.x86.arch.deref_mem_ad = Group(LBRACK + dbreg + RBRACK)
 
tuple miasm2.arch.x86.arch.deref_ptr
 
tuple miasm2.arch.x86.arch.PTR = Suppress('PTR')
 
tuple miasm2.arch.x86.arch.BYTE = Literal('BYTE')
 
tuple miasm2.arch.x86.arch.WORD = Literal('WORD')
 
tuple miasm2.arch.x86.arch.DWORD = Literal('DWORD')
 
tuple miasm2.arch.x86.arch.QWORD = Literal('QWORD')
 
tuple miasm2.arch.x86.arch.TBYTE = Literal('TBYTE')
 
tuple miasm2.arch.x86.arch.XMMWORD = Literal('XMMWORD')
 
dictionary miasm2.arch.x86.arch.MEMPREFIX2SIZE
 
tuple miasm2.arch.x86.arch.SIZE2MEMPREFIX = dict((x[1], x[0]) for x in MEMPREFIX2SIZE.items())
 
tuple miasm2.arch.x86.arch.mem_size = Group(BYTE | DWORD | QWORD | WORD | TBYTE | XMMWORD)
 
tuple miasm2.arch.x86.arch.deref_mem
 
tuple miasm2.arch.x86.arch.rmarg
 
tuple miasm2.arch.x86.arch.cl_or_imm = Group(r08_ecx.parser)
 
dictionary miasm2.arch.x86.arch.invmode = {16: 32, 32: 16}
 
list miasm2.arch.x86.arch.repeat_mn
 
dictionary miasm2.arch.x86.arch.segm2enc = {CS: 1, SS: 2, DS: 3, ES: 4, FS: 5, GS: 6}
 
tuple miasm2.arch.x86.arch.enc2segm = dict([(x[1], x[0]) for x in segm2enc.items()])
 
list miasm2.arch.x86.arch.db_afs_64 = []
 
list miasm2.arch.x86.arch.sib_64_s08_ebp = []
 
dictionary miasm2.arch.x86.arch.SIZE2XMMREG
 
tuple miasm2.arch.x86.arch.d_rex_p = bs(l=0, cls=(bs_fbit,), fname="rex_p")
 
tuple miasm2.arch.x86.arch.d_rex_w = bs(l=0, cls=(bs_fbit,), fname="rex_w")
 
tuple miasm2.arch.x86.arch.d_rex_r = bs(l=0, cls=(bs_fbit,), fname="rex_r")
 
tuple miasm2.arch.x86.arch.d_rex_x = bs(l=0, cls=(bs_fbit,), fname="rex_x")
 
tuple miasm2.arch.x86.arch.d_rex_b = bs(l=0, cls=(bs_fbit,), fname="rex_b")
 
tuple miasm2.arch.x86.arch.d_g1 = bs(l=0, cls=(bs_fbit,), fname="g1")
 
tuple miasm2.arch.x86.arch.d_g2 = bs(l=0, cls=(bs_fbit,), fname="g2")
 
tuple miasm2.arch.x86.arch.d_cl1 = bs(l=1, cls=(bs_cl1,), fname="cl1")
 
tuple miasm2.arch.x86.arch.w8 = bs(l=1, fname="w8")
 
tuple miasm2.arch.x86.arch.se = bs(l=1, fname="se")
 
tuple miasm2.arch.x86.arch.sx = bs(l=0, fname="sx")
 
tuple miasm2.arch.x86.arch.sxd = bs(l=0, fname="sx")
 
tuple miasm2.arch.x86.arch.xmmreg = bs(l=0, fname="xmmreg")
 
tuple miasm2.arch.x86.arch.mmreg = bs(l=0, fname="mmreg")
 
tuple miasm2.arch.x86.arch.pref_f2 = bs(l=0, fname="prefixed", default="\xf2")
 
tuple miasm2.arch.x86.arch.pref_f3 = bs(l=0, fname="prefixed", default="\xf3")
 
tuple miasm2.arch.x86.arch.pref_66 = bs(l=0, fname="prefixed", default="\x66")
 
tuple miasm2.arch.x86.arch.no_xmm_pref = bs(l=0, fname="no_xmm_pref")
 
tuple miasm2.arch.x86.arch.sib_scale = bs(l=2, cls=(bs_cond_scale,), fname = "sib_scale")
 
tuple miasm2.arch.x86.arch.sib_index = bs(l=3, cls=(bs_cond_index,), fname = "sib_index")
 
tuple miasm2.arch.x86.arch.sib_base = bs(l=3, cls=(bs_cond_index,), fname = "sib_base")
 
tuple miasm2.arch.x86.arch.disp = bs(l=0, cls=(bs_cond_disp,), fname = "disp")
 
tuple miasm2.arch.x86.arch.s08 = bs(l=8, cls=(bs_s08, ))
 
tuple miasm2.arch.x86.arch.u08 = bs(l=8, cls=(x86_08, m_arg))
 
tuple miasm2.arch.x86.arch.u07 = bs(l=7, cls=(x86_08, m_arg))
 
tuple miasm2.arch.x86.arch.u16 = bs(l=16, cls=(x86_16, m_arg))
 
tuple miasm2.arch.x86.arch.u32 = bs(l=32, cls=(x86_32, m_arg))
 
tuple miasm2.arch.x86.arch.s3264 = bs(l=32, cls=(x86_s32to64, m_arg))
 
tuple miasm2.arch.x86.arch.u08_3 = bs(l=0, cls=(x86_imm_fix, m_arg), ival = 3)
 
tuple miasm2.arch.x86.arch.d0 = bs("000", fname='reg')
 
tuple miasm2.arch.x86.arch.d1 = bs("001", fname='reg')
 
tuple miasm2.arch.x86.arch.d2 = bs("010", fname='reg')
 
tuple miasm2.arch.x86.arch.d3 = bs("011", fname='reg')
 
tuple miasm2.arch.x86.arch.d4 = bs("100", fname='reg')
 
tuple miasm2.arch.x86.arch.d5 = bs("101", fname='reg')
 
tuple miasm2.arch.x86.arch.d6 = bs("110", fname='reg')
 
tuple miasm2.arch.x86.arch.d7 = bs("111", fname='reg')
 
tuple miasm2.arch.x86.arch.sd = bs(l=1, fname="sd")
 
tuple miasm2.arch.x86.arch.wd = bs(l=1, fname="wd")
 
tuple miasm2.arch.x86.arch.stk = bs(l=0, fname="stk")
 
tuple miasm2.arch.x86.arch.d_imm64 = bs(l=0, fname="imm64")
 
tuple miasm2.arch.x86.arch.d_eax = bs(l=0, cls=(bs_eax, ), fname='eax')
 
tuple miasm2.arch.x86.arch.d_edx = bs(l=0, cls=(bs_edx, ), fname='edx')
 
tuple miasm2.arch.x86.arch.d_st = bs(l=0, cls=(x86_reg_st, ), fname='st')
 
tuple miasm2.arch.x86.arch.d_imm = bs(l=0, cls=(bs_cond_imm,), fname="imm")
 
tuple miasm2.arch.x86.arch.d_ax = bs(l=0, cls=(r_ax, ), fname='ax')
 
tuple miasm2.arch.x86.arch.d_dx = bs(l=0, cls=(r_dx, ), fname='dx')
 
tuple miasm2.arch.x86.arch.d_cl = bs(l=0, cls=(r_cl, ), fname='cl')
 
tuple miasm2.arch.x86.arch.d_cs = bs(l=0, cls=(bs_cs, ), fname='cs')
 
tuple miasm2.arch.x86.arch.d_ds = bs(l=0, cls=(bs_ds, ), fname='ds')
 
tuple miasm2.arch.x86.arch.d_es = bs(l=0, cls=(bs_es, ), fname='es')
 
tuple miasm2.arch.x86.arch.d_ss = bs(l=0, cls=(bs_ss, ), fname='ss')
 
tuple miasm2.arch.x86.arch.d_fs = bs(l=0, cls=(bs_fs, ), fname='fs')
 
tuple miasm2.arch.x86.arch.d_gs = bs(l=0, cls=(bs_gs, ), fname='gs')
 
tuple miasm2.arch.x86.arch.rel_off = bs(l=0, cls=(bs_rel_off,), fname="off", order=-1)
 
tuple miasm2.arch.x86.arch.rel_off08 = bs(l=8, cls=(bs_rel_off08,), fname="off", order=-1)
 
tuple miasm2.arch.x86.arch.moff = bs(l=0, cls=(bs_moff,), fname="off")
 
tuple miasm2.arch.x86.arch.msegoff = bs(l=16, cls=(bs_msegoff,), fname="mseg")
 
tuple miasm2.arch.x86.arch.movoff = bs(l=0, cls=(bs_movoff,), fname="off")
 
tuple miasm2.arch.x86.arch.mod = bs(l=2, fname="mod")
 
tuple miasm2.arch.x86.arch.mod_mem = bs(l=2, cls=(bs_mem,), fname="mod")
 
tuple miasm2.arch.x86.arch.rmreg = bs(l=3, cls=(x86_rm_reg, ), order =1, fname = "reg")
 
tuple miasm2.arch.x86.arch.reg = bs(l=3, cls=(x86_reg, ), order =1, fname = "reg")
 
tuple miasm2.arch.x86.arch.regnoarg = bs(l=3, default_val="000", order=1, fname="reg")
 
tuple miasm2.arch.x86.arch.segm = bs(l=3, cls=(x86_rm_segm, ), order =1, fname = "reg")
 
tuple miasm2.arch.x86.arch.crreg = bs(l=3, cls=(x86_rm_cr, ), order =1, fname = "reg")
 
tuple miasm2.arch.x86.arch.drreg = bs(l=3, cls=(x86_rm_dr, ), order =1, fname = "reg")
 
tuple miasm2.arch.x86.arch.mm_reg = bs(l=3, cls=(x86_rm_reg_mm, ), order =1, fname = "reg")
 
tuple miasm2.arch.x86.arch.xmm_reg = bs(l=3, cls=(x86_rm_reg_xmm, ), order =1, fname = "reg")
 
tuple miasm2.arch.x86.arch.fltreg = bs(l=3, cls=(x86_rm_flt, ), order =1, fname = "reg")
 
tuple miasm2.arch.x86.arch.rm = bs(l=3, fname="rm")
 
tuple miasm2.arch.x86.arch.rm_arg = bs(l=0, cls=(x86_rm_arg,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_w8 = bs(l=0, cls=(x86_rm_w8,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_sx = bs(l=0, cls=(x86_rm_sx,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_sxd = bs(l=0, cls=(x86_rm_sxd,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_sd = bs(l=0, cls=(x86_rm_sd,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_wd = bs(l=0, cls=(x86_rm_wd,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_m64 = bs(l=0, cls=(x86_rm_m64,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_m80 = bs(l=0, cls=(x86_rm_m80,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_m08 = bs(l=0, cls=(x86_rm_m08,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_m16 = bs(l=0, cls=(x86_rm_m16,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_mm = bs(l=0, cls=(x86_rm_mm,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_mm_m64 = bs(l=0, cls=(x86_rm_mm_m64,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_xmm = bs(l=0, cls=(x86_rm_xmm,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_xmm_m32 = bs(l=0, cls=(x86_rm_xmm_m32,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.rm_arg_xmm_m64 = bs(l=0, cls=(x86_rm_xmm_m64,), fname='rmarg')
 
tuple miasm2.arch.x86.arch.swapargs = bs_swapargs(l=1, fname="swap", mn_mod=range(1 << 1))
 
list miasm2.arch.x86.arch.cond_list
 
tuple miasm2.arch.x86.arch.cond = bs_mod_name(l=4, fname='cond', mn_mod=cond_list)
 
tuple miasm2.arch.x86.arch.bs_opmode16 = bs(l=0, cls=(bs_op_mode,), mode = 16, fname="fopmode")
 
tuple miasm2.arch.x86.arch.bs_opmode32 = bs(l=0, cls=(bs_op_mode,), mode = 32, fname="fopmode")
 
tuple miasm2.arch.x86.arch.bs_opmode64 = bs(l=0, cls=(bs_op_mode,), mode = 64, fname="fopmode")
 
tuple miasm2.arch.x86.arch.bs_admode16 = bs(l=0, cls=(bs_ad_mode,), mode = 16, fname="fadmode")
 
tuple miasm2.arch.x86.arch.bs_admode32 = bs(l=0, cls=(bs_ad_mode,), mode = 32, fname="fadmode")
 
tuple miasm2.arch.x86.arch.bs_admode64 = bs(l=0, cls=(bs_ad_mode,), mode = 64, fname="fadmode")
 
tuple miasm2.arch.x86.arch.bs_opmode16_no64 = bs(l=0, cls=(bs_op_mode_no64,), mode = 16, fname="fopmode")
 
tuple miasm2.arch.x86.arch.bs_opmode32_no64 = bs(l=0, cls=(bs_op_mode_no64,), mode = 32, fname="fopmode")
 
tuple miasm2.arch.x86.arch.bs_mode64 = bs(l=0, cls=(bs_op_mode64,))
 
tuple miasm2.arch.x86.arch.bs_modeno64 = bs(l=0, cls=(bs_op_modeno64,))