Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
	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