def symbbl(inst, arch="i386", preDefineMem={}, startPC=0): assert arch in ["i386", "amd64"] instmem = InstMemory() for addr in xrange(len(inst)): instmem.putchar(addr, inst[addr]) datamem = DataMemory({'i386': 32, 'amd64': 64}[arch]) PC0 = startPC cpu = Cpu(instmem, datamem, arch) cpu.PC = startPC for k in preDefineMem.keys(): _doPreDefineMem(k[0], k[1], preDefineMem[k], datamem, cpu) #RUN while PC0 <= cpu.PC < len(inst) + PC0: if issymbolic(cpu.PC): pcs = getallvalues(cpu.PC) if len(pcs) == 1: cpu.PC = pcs[0] else: print "Stop Execution because symbolic PC" print pcs print cpu.PC raw_input() break print cpu.getInstruction(cpu.PC) cpu.execute() return cpu