Skip to content

Mips

BRANCH_LIKELY_INSTRUCTIONS = {MIPS_INS_BC0TL, MIPS_INS_BC1TL, MIPS_INS_BC0FL, MIPS_INS_BC1FL, MIPS_INS_BEQL, MIPS_INS_BGEZALL, MIPS_INS_BGEZL, MIPS_INS_BGTZL, MIPS_INS_BLEZL, MIPS_INS_BLTZALL, MIPS_INS_BLTZL, MIPS_INS_BNEL} module-attribute

CONDITION_RESOLVERS: Dict[int, Callable[[List[int]], bool]] = {MIPS_INS_BEQZ: lambda ops: ops[0] == 0, MIPS_INS_BNEZ: lambda ops: ops[0] != 0, MIPS_INS_BEQ: lambda ops: ops[0] == ops[1], MIPS_INS_BNE: lambda ops: ops[0] != ops[1], MIPS_INS_BGEZ: lambda ops: bit_math.to_signed(ops[0], pwndbg.aglib.arch.ptrsize * 8) >= 0, MIPS_INS_BGEZAL: lambda ops: bit_math.to_signed(ops[0], pwndbg.aglib.arch.ptrsize * 8) >= 0, MIPS_INS_BGTZ: lambda ops: bit_math.to_signed(ops[0], pwndbg.aglib.arch.ptrsize * 8) > 0, MIPS_INS_BLEZ: lambda ops: bit_math.to_signed(ops[0], pwndbg.aglib.arch.ptrsize * 8) <= 0, MIPS_INS_BLTZAL: lambda ops: bit_math.to_signed(ops[0], pwndbg.aglib.arch.ptrsize * 8) < 0, MIPS_INS_BLTZ: lambda ops: bit_math.to_signed(ops[0], pwndbg.aglib.arch.ptrsize * 8) < 0} module-attribute

MIPS_BINARY_OPERATIONS = {MIPS_INS_ADD: '+', MIPS_INS_ADDI: '+', MIPS_INS_ADDIU: '+', MIPS_INS_ADDU: '+', MIPS_INS_DADD: '+', MIPS_INS_DADDI: '+', MIPS_INS_DADDIU: '+', MIPS_INS_DADDU: '+', MIPS_INS_SUB: '-', MIPS_INS_SUBU: '-', MIPS_INS_DSUB: '-', MIPS_INS_DSUBU: '-', MIPS_INS_ANDI: '&', MIPS_INS_AND: '&', MIPS_INS_ORI: '|', MIPS_INS_OR: '|', MIPS_INS_XOR: '^', MIPS_INS_XORI: '^', MIPS_INS_SLL: '<<', MIPS_INS_SLLV: '<<', MIPS_INS_DSLL: '<<', MIPS_INS_DSLLV: '<<', MIPS_INS_SRL: '>>', MIPS_INS_SRLV: '>>', MIPS_INS_DSRL: '>>', MIPS_INS_DSRLV: '>>'} module-attribute

MIPS_LOAD_INSTRUCTIONS = {MIPS_INS_LB: -1, MIPS_INS_LBU: 1, MIPS_INS_LH: -2, MIPS_INS_LHU: 2, MIPS_INS_LW: -4, MIPS_INS_LWU: 4, MIPS_INS_LWPC: -4, MIPS_INS_LWUPC: 4, MIPS_INS_LD: -8, MIPS_INS_LDPC: 8} module-attribute

MIPS_SIMPLE_DESTINATION_INSTRUCTIONS = {MIPS_INS_CLO, MIPS_INS_CLZ, MIPS_INS_DCLO, MIPS_INS_DCLZ, MIPS_INS_LSA, MIPS_INS_DLSA, MIPS_INS_MFHI, MIPS_INS_MFLO, MIPS_INS_SEB, MIPS_INS_SEH, MIPS_INS_WSBH, MIPS_INS_SLT, MIPS_INS_SLTI, MIPS_INS_SLTIU, MIPS_INS_SLTU, MIPS_INS_MOVN, MIPS_INS_LDL, MIPS_INS_LDR, MIPS_INS_LWL, MIPS_INS_LWR} module-attribute

MIPS_STORE_INSTRUCTIONS = {MIPS_INS_SB: 1, MIPS_INS_SH: 2, MIPS_INS_SW: 4, MIPS_INS_SD: 8} module-attribute

assistant = DisassemblyAssistant('mips') module-attribute

DisassemblyAssistant

Bases: DisassemblyAssistant

annotation_handlers: Dict[int, Callable[[PwndbgInstruction, Emulator], None]] = {MIPS_INS_MOVE: self._common_move_annotator, MIPS_INS_LI: self._common_move_annotator, MIPS_INS_LUI: self._lui_annotator} instance-attribute

__init__(architecture)