littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于C++的ARM动态重编译器

项目简介

Dynarmic是一个针对ARM架构的动态重编译器,其核心功能是把ARM指令集动态转换为x86 - 64指令集,以此实现在非原生平台上运行ARM二进制文件。该项目支持ARMv6K和64位ARMv8架构,且仅以x86 - 64作为目标架构。项目设计目标是实现高性能的ARM指令集模拟,不过在部分情况下会牺牲一定的精确性。

项目的主要特性和功能

支持的架构

  • 客机架构:ARMv6K、64位ARMv8
  • 主机架构:x86 - 64

主要功能

  • 动态将ARM指令集重编译为x86 - 64指令集。
  • 提供用户回调接口,方便用户自定义内存系统和异常处理。
  • 支持用户模式模拟,但不支持其他特权级别。
  • 提供近似浮点状态(FPSR)和部分异常处理。

已知限制

  • 仅支持用户模式,不支持其他特权级别。
  • 浮点状态(FPSR)是近似的。
  • 某些情况下,未对齐的加载/存储不会被正确捕获。
  • 独占监视器的行为可能与任何已知的物理处理器不匹配。

安装使用步骤

编译项目

使用C++编译器(如g++或clang++)编译项目,要确保所有依赖项已正确安装。 bash g++ -std=c++17 -o dynarmic main.cpp -ldynarmic

运行示例

使用提供的示例代码运行项目,示例代码展示了如何设置环境、加载代码并执行ARM指令。 bash ./dynarmic

自定义配置

用户可根据需要自定义内存系统、异常处理和回调函数。参考MyEnvironment类的实现,继承Dynarmic::A32::UserCallbacks接口并实现所需的方法。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】