def i_BFC(i, fmap): cond, dest, lsb, size = __pre(i, fmap) src = fmap(dest) result = composer([src[0:lsb], cst(0, size), src[lsb + size:src.size]]) fmap[dest] = tst(cond, result, fmap(dest)) if dest is pc: raise InstructionError(i)
def i_BFI(i,fmap): cond,dest,src,lsb,size = __pre(i,fmap) src = fmap(src) result = composer([dest[0:lsb],src[lsb,lsb+size],dest[lsb+size:dest.size]]) fmap[dest] = stst(cond,result,fmap(dest)) if dest is pc: raise InstructionError(i)
def __check_state(i, fmap): address = fmap(pc) if address.bit(0) == 1: internals['isetstate'] = 1 elif address.bit(1) == 0: internals['isetstate'] = 0 else: if address._is_cst: raise InstructionError(i) else: logger.verbose( 'impossible to check isetstate (ARM/Thumb) until pc is cst')
def i_SMC(i, fmap): raise InstructionError(i)