Exemple #1
0
    def print_if_cond(self, jump_cond, fused_inst):
        if fused_inst is None:
            print_no_end(cond_symbol(jump_cond))
            if jump_cond in JMP_ADD_ZERO:
                print_no_end(" 0")
            return

        assignment = fused_inst.id in ASSIGNMENT_OPS

        if assignment:
            print_no_end("(")
        print_no_end("(")
        self.print_operand(fused_inst, 0)
        print_no_end(" ")

        if fused_inst.id == X86_INS_TEST:
            print_no_end(cond_symbol(jump_cond))
        elif assignment:
            print_no_end(inst_symbol(fused_inst))
            print_no_end(" ")
            self.print_operand(fused_inst, 1)
            print_no_end(") ")
            print_no_end(cond_symbol(jump_cond))
        else:
            print_no_end(cond_symbol(jump_cond))
            print_no_end(" ")
            self.print_operand(fused_inst, 1)

        if fused_inst.id == X86_INS_TEST or \
                (fused_inst.id != X86_INS_CMP and \
                 (jump_cond in JMP_ADD_ZERO or assignment)):
            print_no_end(" 0")

        print_no_end(")")
Exemple #2
0
    def _if_cond(self, jump_cond, fused_inst):
        if fused_inst is None:
            self._add(cond_symbol(jump_cond))
            if jump_cond in JMP_ADD_ZERO:
                self._add(" 0")
            return

        assignment = fused_inst.id in ASSIGNMENT_OPS

        if assignment:
            self._add("(")
        self._add("(")
        self._operand(fused_inst, 0)
        self._add(" ")

        if fused_inst.id == X86_INS_TEST:
            self._add(cond_symbol(jump_cond))
        elif assignment:
            self._add(inst_symbol(fused_inst))
            self._add(" ")
            self._operand(fused_inst, 1)
            self._add(") ")
            self._add(cond_symbol(jump_cond))
        else:
            self._add(cond_symbol(jump_cond))
            self._add(" ")
            self._operand(fused_inst, 1)

        if fused_inst.id == X86_INS_TEST or \
                (fused_inst.id != X86_INS_CMP and \
                 (jump_cond in JMP_ADD_ZERO or assignment)):
            self._add(" 0")

        self._add(")")