miasm
Reverse engineering framework
arch.py File Reference

Classes

class  miasm.arch.ppc.arch.ppc_arg
 
class  miasm.arch.ppc.arch.additional_info
 
class  miasm.arch.ppc.arch.instruction_ppc
 
class  miasm.arch.ppc.arch.mn_ppc
 
class  miasm.arch.ppc.arch.ppc_reg
 
class  miasm.arch.ppc.arch.ppc_gpreg_noarg
 
class  miasm.arch.ppc.arch.ppc_gpreg_or_0_noarg
 
class  miasm.arch.ppc.arch.ppc_gpreg
 
class  miasm.arch.ppc.arch.ppc_gpreg_or_0
 
class  miasm.arch.ppc.arch.ppc_crfreg_noarg
 
class  miasm.arch.ppc.arch.ppc_crfreg
 
class  miasm.arch.ppc.arch.ppc_imm
 
class  miasm.arch.ppc.arch.ppc_s14imm_branch
 
class  miasm.arch.ppc.arch.ppc_s24imm_branch
 
class  miasm.arch.ppc.arch.ppc_s16imm
 
class  miasm.arch.ppc.arch.ppc_u16imm
 
class  miasm.arch.ppc.arch.ppc_spr
 
class  miasm.arch.ppc.arch.ppc_tbr
 
class  miasm.arch.ppc.arch.ppc_u08imm
 
class  miasm.arch.ppc.arch.ppc_u05imm
 
class  miasm.arch.ppc.arch.ppc_u04imm
 
class  miasm.arch.ppc.arch.ppc_u02imm_noarg
 
class  miasm.arch.ppc.arch.ppc_float
 
class  miasm.arch.ppc.arch.ppc_vex
 
class  miasm.arch.ppc.arch.ppc_divert_conditional_branch
 
class  miasm.arch.ppc.arch.ppc_deref32
 
class  miasm.arch.ppc.arch.bs_mod_name_prio4
 
class  miasm.arch.ppc.arch.bs_mod_name_prio5
 
class  miasm.arch.ppc.arch.bs_mod_name_prio6
 

Namespaces

 miasm.arch.ppc.arch
 

Functions

def miasm.arch.ppc.arch.cb_deref_imm_reg (tokens)
 
def miasm.arch.ppc.arch.ppc_swap_10 (v)
 
def miasm.arch.ppc.arch.ppc_bo_bi_to_mnemo (bo, bi, prefer_taken=True, default_taken=True)
 
def miasm.arch.ppc.arch.ppc_all_bo_bi ()
 
def miasm.arch.ppc.arch.ppcop (name, fields, args=None, alias=False)
 

Variables

 miasm.arch.ppc.arch.log = logging.getLogger("ppcdis")
 
 miasm.arch.ppc.arch.console_handler = logging.StreamHandler()
 
 miasm.arch.ppc.arch.LPARENTHESIS = Suppress(Literal("("))
 
 miasm.arch.ppc.arch.RPARENTHESIS = Suppress(Literal(")"))
 
tuple miasm.arch.ppc.arch.deref_reg_disp = (Optional(base_expr) + LPARENTHESIS + gpregs.parser + RPARENTHESIS).setParseAction(cb_deref_imm_reg)
 
tuple miasm.arch.ppc.arch.deref_reg = (LPARENTHESIS + gpregs.parser + RPARENTHESIS).setParseAction(cb_deref_imm_reg)
 
tuple miasm.arch.ppc.arch.deref = deref_reg | deref_reg_disp
 
 miasm.arch.ppc.arch.rd = bs(l=5, cls=(ppc_gpreg,))
 
 miasm.arch.ppc.arch.ra = bs(l=5, cls=(ppc_gpreg,))
 
 miasm.arch.ppc.arch.ra_or_0 = bs(l=5, cls=(ppc_gpreg_or_0,))
 
 miasm.arch.ppc.arch.rb = bs(l=5, cls=(ppc_gpreg,))
 
 miasm.arch.ppc.arch.rs = bs(l=5, cls=(ppc_gpreg,))
 
 miasm.arch.ppc.arch.crfd = bs(l=3, cls=(ppc_crfreg,))
 
 miasm.arch.ppc.arch.crfs = bs(l=3, cls=(ppc_crfreg,))
 
 miasm.arch.ppc.arch.sh = bs(l=5, cls=(ppc_u05imm,))
 
 miasm.arch.ppc.arch.mb = bs(l=5, cls=(ppc_u05imm,))
 
 miasm.arch.ppc.arch.me = bs(l=5, cls=(ppc_u05imm,))
 
 miasm.arch.ppc.arch.nb = bs(l=5, cls=(ppc_u05imm,))
 
 miasm.arch.ppc.arch.crm = bs(l=8, cls=(ppc_u08imm,))
 
 miasm.arch.ppc.arch.sr = bs(l=4, cls=(ppc_u04imm,))
 
 miasm.arch.ppc.arch.spr = bs(l=10, cls=(ppc_spr,))
 
 miasm.arch.ppc.arch.tbr = bs(l=10, cls=(ppc_tbr,))
 
 miasm.arch.ppc.arch.u05imm = bs(l=5, cls=(ppc_u05imm,))
 
 miasm.arch.ppc.arch.s24imm_branch = bs(l=24, cls=(ppc_s24imm_branch,), fname="imm")
 
 miasm.arch.ppc.arch.s14imm_branch = bs(l=14, cls=(ppc_s14imm_branch,), fname="imm")
 
 miasm.arch.ppc.arch.s16imm = bs(l=16, cls=(ppc_s16imm,), fname="imm")
 
 miasm.arch.ppc.arch.u16imm = bs(l=16, cls=(ppc_u16imm,), fname="imm")
 
 miasm.arch.ppc.arch.u08imm = bs(l=5, cls=(ppc_u08imm,), fname="imm")
 
 miasm.arch.ppc.arch.u02imm_noarg = bs(l=2, cls=(ppc_u02imm_noarg,), fname="imm")
 
 miasm.arch.ppc.arch.ra_noarg = bs(l=5, cls=(ppc_gpreg_noarg,), fname="ra")
 
 miasm.arch.ppc.arch.ra_or_0_noarg = bs(l=5, cls=(ppc_gpreg_or_0_noarg,), fname="ra")
 
 miasm.arch.ppc.arch.dregimm = bs(l=16, cls=(ppc_deref32,))
 
 miasm.arch.ppc.arch.rc_mod = bs_mod_name(l=1, mn_mod=['', '.'], fname='rc')
 
 miasm.arch.ppc.arch.frd = bs(l=5, cls=(ppc_float,))
 
 miasm.arch.ppc.arch.frb = bs(l=5, cls=(ppc_float,))
 
 miasm.arch.ppc.arch.frs = bs(l=5, cls=(ppc_float,))
 
 miasm.arch.ppc.arch.fm = bs(l=8, cls=(ppc_u08imm,))
 
 miasm.arch.ppc.arch.va = bs(l=5, cls=(ppc_vex,))
 
 miasm.arch.ppc.arch.vb = bs(l=5, cls=(ppc_vex,))
 
 miasm.arch.ppc.arch.vd = bs(l=5, cls=(ppc_vex,))
 
 miasm.arch.ppc.arch.rb_noarg = bs(l=5, cls=(ppc_gpreg_noarg,), fname="rb")
 
dictionary miasm.arch.ppc.arch.arith1_name
 
dictionary miasm.arch.ppc.arch.logic2_name = {"ORI": 0b011000, "XORI": 0b011010, "ANDI.": 0b011100 }
 
dictionary miasm.arch.ppc.arch.slogic2_name = {"ORIS": 0b011001, "XORIS": 0b011011, "ANDIS.": 0b011101 }
 
dictionary miasm.arch.ppc.arch.arith3_name
 
dictionary miasm.arch.ppc.arch.xor_name = { "EQV": 0b0100011100, "XOR": 0b0100111100 }
 
dictionary miasm.arch.ppc.arch.arith4_name
 
dictionary miasm.arch.ppc.arch.arith5_name = {"CNTLZW": 0b00000, "EXTSH": 0b11100, "EXTSB": 0b11101 }
 
dictionary miasm.arch.ppc.arch.crlogic_name
 
dictionary miasm.arch.ppc.arch.rotins_name = {"RLWIMI": 0b010100, "RLWINM": 0b010101 }
 
 miasm.arch.ppc.arch.bs_arith1_name = bs_name(l=6, name=arith1_name)
 
dictionary miasm.arch.ppc.arch.load1_name
 
dictionary miasm.arch.ppc.arch.load1_name_u
 
dictionary miasm.arch.ppc.arch.load2_name
 
dictionary miasm.arch.ppc.arch.load2_name_u = {"LWZU": 0b0001, "LBZU": 0b0011, "LHZU": 0b1001, "LHAU": 0b1011}
 
dictionary miasm.arch.ppc.arch.store1_name
 
dictionary miasm.arch.ppc.arch.store1_name_u
 
dictionary miasm.arch.ppc.arch.store2_name = { "STW": 0b0100, "STB": 0b0110, "STH": 0b1100, "STMW": 0b1111 }
 
dictionary miasm.arch.ppc.arch.store2_name_u = { "STWU": 0b0101, "STBU": 0b0111, "STHU": 0b1101 }
 
dictionary miasm.arch.ppc.arch.logic1_name
 
dictionary miasm.arch.ppc.arch.dcb_name
 
dictionary miasm.arch.ppc.arch.load1_name_float = {"LFS": 0b110000, "LFD": 0b110010 }
 
dictionary miasm.arch.ppc.arch.load1_name_float_u = {"LFSU": 0b110001, "LFDU": 0b110011 }
 
dictionary miasm.arch.ppc.arch.store1_name_float = {"STFS": 0b110100, "STFD": 0b110110 }
 
dictionary miasm.arch.ppc.arch.store1_name_float_u = {"STFSU": 0b110101, "STFDU": 0b110111 }
 
dictionary miasm.arch.ppc.arch.load1_name_vex
 
 miasm.arch.ppc.arch.branch_to_reg = bs_mod_name_prio4(l=1, mn_mod=['LR', 'CTR'], fname='btoreg')
 
 miasm.arch.ppc.arch.branch_lk = bs_mod_name_prio5(l=1, mn_mod=['', 'L'], fname='lk')
 
 miasm.arch.ppc.arch.branch_aa = bs_mod_name_prio6(l=1, mn_mod=['', 'A'], fname='aa')