示例#1
0
    def _setup_arm_arch(self):
        """Set up ARM architecture.
        """
        arch_mode = arch.ARCH_ARM_MODE_THUMB

        self.arch_info = ArmArchitectureInformation(arch_mode)
        self.disassembler = ArmDisassembler(architecture_mode=arch_mode)
        self.ir_translator = ArmTranslator(architecture_mode=arch_mode)
示例#2
0
    def _setup_arm_arch(self, arch_mode=None):
        """Set up ARM architecture.
        """
        if arch_mode is None:
            arch_mode = arch.ARCH_ARM_MODE_THUMB

        self.name = "ARM"
        self.arch_info = ArmArchitectureInformation(arch_mode)
        self.disassembler = ArmDisassembler(architecture_mode=arch_mode)
        self.ir_translator = ArmTranslator(architecture_mode=arch_mode)

        # Load instruction pointer register.
        if self.arch_info.architecture_mode == arch.ARCH_ARM_MODE_THUMB:
            self.ip = "r15"
            self.sp = "r13"
            self.ws = 2  # TODO Check.
        elif self.arch_info.architecture_mode == arch.ARCH_ARM_MODE_ARM:
            self.ip = "r15"
            self.sp = "r13"
            self.ws = 4
        else:
            raise Exception("Invalid architecture mode.")