def mips(self, path=None): func_name, func_addr = self.GetFuncInfo() branch_process = self.bmgr.ComputeBranchProcess(func_addr) func_contents = '' while branch_process.qsize(): try: branch = branch_process.get_nowait() except Queue.Empty: continue self.reg = self.bmgr.GetRegStatus(branch['base']) if self.reg: func_contents += self.hex_ray(branch['start'], branch['end']) elif branch['start'] == branch['base']: self.reg = mips_register.MIPS_Register() func_contents += self.hex_ray(branch['start'], branch['end']) else: branch_process.put_nowait(branch) if path: filename = path + '\\' + func_name + ".c" else: filename = func_name + ".c" with open(filename, "w") as fh: fh.write(self.func.function(func_contents))
def __init__(self, arc): global NEXTLINE global TAB if arc == ARCHITECTURE['MIPS']: self.arc = ARCHITECTURE['MIPS'] self.func = mips_function.MIPS_Function() self.reg = mips_register.MIPS_Register() self.asm = mips_asm.MIPS_IAsm() else: self.arc = None self.func = None self.reg = None self.asm = None