miasm
Reverse engineering framework
sem.py File Reference

Classes

class  miasm.arch.mep.sem.ir_mepb
 
class  miasm.arch.mep.sem.ir_mepl
 

Namespaces

 miasm.arch.mep.sem
 

Functions

def miasm.arch.mep.sem.compute_s_inf (arg1, arg2)
 
def miasm.arch.mep.sem.compute_u_inf (x, y)
 
def miasm.arch.mep.sem.mep_nop ()
 
def miasm.arch.mep.sem.mep_nop_2_args (arg1, arg2)
 
def miasm.arch.mep.sem.sb (reg_src, deref_dst)
 Load/Store instructions. More...
 
def miasm.arch.mep.sem.sh (reg_src, deref_dst)
 
def miasm.arch.mep.sem.sw (reg_src, deref_dst)
 
def miasm.arch.mep.sem.lb (reg_dst, deref_dst)
 
def miasm.arch.mep.sem.lh (reg_dst, deref_dst)
 
def miasm.arch.mep.sem.lw (reg_dst, deref_dst)
 
def miasm.arch.mep.sem.lbu (reg_dst, deref_dst)
 
def miasm.arch.mep.sem.lhu (reg_dst, deref_dst)
 
def miasm.arch.mep.sem.extb (reg)
 Byte/Halfword extension instructions. More...
 
def miasm.arch.mep.sem.exth (reg)
 
def miasm.arch.mep.sem.extub (reg)
 
def miasm.arch.mep.sem.extuh (reg)
 
def miasm.arch.mep.sem.mov (reg, value)
 Shift amount manipulation instructions. More...
 
def miasm.arch.mep.sem.movu (reg, value)
 
def miasm.arch.mep.sem.movh (reg, imm16)
 
def miasm.arch.mep.sem.add3 (ir, instr, reg_dst, reg_src, reg_or_imm)
 Arithmetic instructions. More...
 
def miasm.arch.mep.sem.add (arg1, arg2)
 
def miasm.arch.mep.sem.advck3 (r0, rn, rm)
 
def miasm.arch.mep.sem.sub (reg1, reg2)
 
def miasm.arch.mep.sem.sbvck3 (ir, instr, r0, rn, rm)
 
def miasm.arch.mep.sem.neg (reg1, reg2)
 
def miasm.arch.mep.sem.slt3 (r0, rn, rm_or_imm5)
 
def miasm.arch.mep.sem.sltu3 (r0, rn, rm_or_imm5)
 
def miasm.arch.mep.sem.sl1ad3 (r0, rn, rm)
 
def miasm.arch.mep.sem.sl2ad3 (r0, rn, rm)
 
def miasm.arch.mep.sem.logical_or (rn, rm)
 Logical instructions. More...
 
def miasm.arch.mep.sem.logical_and (rn, rm)
 
def miasm.arch.mep.sem.xor (rn, rm)
 
def miasm.arch.mep.sem.nor (rn, rm)
 
def miasm.arch.mep.sem.or3 (rn, rm, imm16)
 
def miasm.arch.mep.sem.and3 (rn, rm, imm16)
 
def miasm.arch.mep.sem.xor3 (rn, rm, imm16)
 
def miasm.arch.mep.sem.sra (rn, rm_or_imm5)
 Shift instruction. More...
 
def miasm.arch.mep.sem.srl (rn, rm_or_imm5)
 
def miasm.arch.mep.sem.sll (rn, rm_or_imm5)
 
def miasm.arch.mep.sem.sll3 (r0, rn, imm5)
 
def miasm.arch.mep.sem.fsft (rn, rm)
 
def miasm.arch.mep.sem.bra (disp12)
 Branch/Jump instructions. More...
 
def miasm.arch.mep.sem.beqz (reg_test, disp8)
 
def miasm.arch.mep.sem.bnez (reg_test, disp8)
 
def miasm.arch.mep.sem.beqi (reg_test, imm4, disp16)
 
def miasm.arch.mep.sem.bnei (reg_test, imm4, disp16)
 
def miasm.arch.mep.sem.blti (reg_test, imm4, disp16)
 
def miasm.arch.mep.sem.bgei (reg_test, imm4, disp16)
 
def miasm.arch.mep.sem.beq (rn, rm, disp16)
 
def miasm.arch.mep.sem.bne (rn, rm, disp16)
 
def miasm.arch.mep.sem.bsr (disp)
 
def miasm.arch.mep.sem.jmp (ir, instr, reg_or_imm)
 
def miasm.arch.mep.sem.jsr (reg)
 
def miasm.arch.mep.sem.ret ()
 
def miasm.arch.mep.sem.repeat (rn, disp17)
 
def miasm.arch.mep.sem.erepeat (disp17)
 
def miasm.arch.mep.sem.stc (reg, control_reg)
 Control Instructions. More...
 
def miasm.arch.mep.sem.ldc (reg, control_reg)
 
def miasm.arch.mep.sem.di ()
 
def miasm.arch.mep.sem.ei ()
 
def miasm.arch.mep.sem.reti ()
 
def miasm.arch.mep.sem.swi (imm2)
 
def miasm.arch.mep.sem.bsetm (rm_deref, imm3)
 Bit manipulation instruction option. More...
 
def miasm.arch.mep.sem.bclrm (rm_deref, imm3)
 
def miasm.arch.mep.sem.bnotm (rm_deref, imm3)
 
def miasm.arch.mep.sem.btstm (r0, rm_deref, imm3)
 
def miasm.arch.mep.sem.tas (rn, rm_deref)
 
def miasm.arch.mep.sem.mul (rn, rm)
 Data cache option. More...
 
def miasm.arch.mep.sem.mulu (rn, rm)
 
def miasm.arch.mep.sem.mulr (rn, rm)
 
def miasm.arch.mep.sem.mulru (rn, rm)
 
def miasm.arch.mep.sem.madd (rn, rm)
 
def miasm.arch.mep.sem.maddu (rn, rm)
 
def miasm.arch.mep.sem.maddr (rn, rm)
 
def miasm.arch.mep.sem.maddru (rn, rm)
 
def miasm.arch.mep.sem.div (rn, rm)
 32-bit divide instruction option More...
 
def miasm.arch.mep.sem.divu (rn, rm)
 
def miasm.arch.mep.sem.dret ()
 Debug function option. More...
 
def miasm.arch.mep.sem.dbreak ()
 
def miasm.arch.mep.sem.ldz (rn, rm)
 Leading zero instruction option. More...
 
def miasm.arch.mep.sem.smcp (reg_src, deref_dst)
 Coprocessor option. More...
 
def miasm.arch.mep.sem.lmcp (reg_dst, deref_src)
 
def miasm.arch.mep.sem.swcpi (reg_src, deref_dst)
 
def miasm.arch.mep.sem.lwcpi (reg_dst, deref_src)
 
def miasm.arch.mep.sem.smcpi (reg_src, deref_dst)
 
def miasm.arch.mep.sem.lmcpi (reg_dst, deref_src)
 
def miasm.arch.mep.sem.get_mnemo_expr (ir, instr, *args)
 IR MeP definitions. More...
 

Variables

dictionary miasm.arch.mep.sem.ctx
 
 miasm.arch.mep.sem.sbuild = SemBuilder(ctx)
 
 miasm.arch.mep.sem.manual_functions = dict()
 
 miasm.arch.mep.sem.rm_ext = rm_or_imm5
 
 miasm.arch.mep.sem.sign_mask = i32(0x80000000)
 
 miasm.arch.mep.sem.sign_rn = rn & sign_mask
 
 miasm.arch.mep.sem.sign_rm = rm_ext & sign_mask
 
 miasm.arch.mep.sem.are_both_neg = sign_rn & sign_rm
 
 miasm.arch.mep.sem.are_both_pos = ~(sign_rn & sign_rm) >> i32(31)
 
 miasm.arch.mep.sem.r0_mixed = i32(1) if sign_rn else i32(0)
 
tuple miasm.arch.mep.sem.r0_pos = (i32(1) if "<"(rn, rm_ext) else i32(0)) if are_both_pos else r0_mixed
 
tuple miasm.arch.mep.sem.r0 = (i32(0) if "<"(rn, rm_ext) else i32(1)) if are_both_neg else r0_pos