Dynarmic¶
面向 ARM 的动态重编译器。
请注意,恶意访客程序可以检测出自己是否在 Dynarmic 下运行。阻止这一点并不是本项目的目标。
Cortex-A57(32 位和 64 位)是被模拟的访客目标。参见 ArchVersion。
唯一支持的主机架构是 x86-64 和 AArch64。目前没有计划支持任何 32 位架构。
参见示例用法。
设计文档位于 ./Design.md。
Dynarmic 的替代方案¶
以下是一些与 Dynarmic 目标相同的项目:
更通用的替代方案:
- tARMac - Tarmac 使用 armlets 的做法最初启发我们使用中间表示(IR)
- QEMU - 重编译的多架构系统模拟器
- VisUAL - 面向教育的可视化 ARM UAL 模拟器
- 大量其他重编译器、解释器和模拟器可以嵌入到其他项目中,以下是我们推荐关注的一些:
- firebird 的重编译器 - 采用更多调用线程式的方法进行重编译
- higan 的 arm7tdmi 模拟器 - 代码风格非常干净
- ozaki-r 的 arm-js - 在浏览器中模拟 ARMv7A 以及 Versatile Express 的一些外设
Dynarmic 的缺点¶
为了追求速度,一些通常不被依赖的行为被省略了。因此,这个模拟器不完全符合规范。 请注意,这意味着访客应用可以很容易地检测出自己是否在插桩环境下运行。
已知示例:
- 仅模拟用户模式,不模拟任何其他特权级别。
- FPSR 状态是近似值。
- 在某些情况下,未对齐的加载/存储不会被正确捕获。
- 独占监视器的行为可能与任何已知的物理处理器都不匹配。
尚未进行形式化验证,也未进行安全评估。 使用此代码库风险自负。
法律信息¶
Dynarmic 采用 GPLv3 许可证,请查看相关文件头以获取更多信息。
Dynarmic 使用了多个开源库,其许可证包含在相应库中。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 eg/Eglantine