
applegpu逆向路线图Apple G13 GPU架构还有哪些未解之谜等待攻克【免费下载链接】applegpuApple G13 GPU architecture docs and tools项目地址: https://gitcode.com/gh_mirrors/ap/applegpuapplegpu 是一个针对Apple G13 GPU 架构即 M1 SoC 内置的图形芯片的开源逆向工程reverse engineering项目。它不只是逆向——而是边逆向边产出成果一份持续更新的架构文档、一个 GPU 反汇编器、一个汇编器以及一个指令级模拟器。对想研究 Apple 芯片、GPU 指令集分析或 Metal 着色器二进制格式的人来说这是目前最完整的地图。applegpu 是什么G13 逆向工程的四大核心工具工具入口文件作用反汇编器disassemble.py把 GPU 机器码翻译成可读汇编项目最有用的部分汇编器assemble.py手写汇编并生成机器码常用于构造测试用例模拟器applegpu.pyCoreState类在软件中逐条执行指令、维护寄存器状态用于和真实硬件对拍硬件测试hwtest.py在 Apple Silicon 真机上跑指令与模拟器结果比对 这套组合拳的精髓在于闭环验证模拟器实现一条指令 → 硬件测试在真机上执行同一条指令 → 状态一致才算通过。测试框架会把自己编译的 shader 写进 Metal 二进制存档里metallib_replacer.py负责替换hwtestbed/目录下的 C/C 助手程序负责在 GPU 上执行并回传缓冲区和耗时协议定义见hwtestbed/protocol.h。# 反汇编一段 GPU 二进制 python3 disassemble.py code.bin # 在 M 系列芯片上跑硬件测试 python3 hwtest.py路线图已攻克Apple G13 指令集解码框架从 架构参考文档由genhtml.py生成docs.html为成品可以看到以下谜团已经揭开指令编码结构变长指令2~12 字节按操作码匹配字段applegpu.py中instruction_descriptors列表就是解码核心指令族覆盖Move、整数算术、移位/位域、位操作、浮点运算含 FMAfma.py专门解析融合乘加、Flow Control、Select、SIMD Group / Quad Group、内存与栈等系统寄存器含义如core_index、simdgroup_index_in_threadgroup、active_thread_index_in_quadgroup等在applegpu.py顶部的SR_NAMES表中逐一命名色彩空间细节srgb.py还原了 sRGB 查找表。文档中每一条指令都配有逐位编码图——已确认的比特标注字段名未知的标注为?。这张比特地图本身就是逆向进度的可视化仪表盘。未解之谜清单Apple G13 GPU 还有哪些盲区之谜一流控制尚不完整——模拟器为什么不敢跳README 明确写道Theres no flow control yet模拟器还没有流控制支持。applegpu.py中虽已定义BranchOffsetDesc、StackAdjustmentDesc等分支相关字段描述且文档收录了 Flow Control 与 Execution Mask Stack 指令族但模拟器执行跳转、调用、掩码栈压弹的完整逻辑尚未闭环。分支语义回边、栈深度、异常路径仍是待验证的重头戏。之谜二编码表里的每一个?比特生成器genhtml.py会把未解析比特渲染成灰底?。这些散落在各指令编码图中的未知位可能是保留字段、也可能是尚未发现的修饰标志如 cache 提示位项目用APPLEGPU_CRYPTIC环境变量控制其显示方式。消掉一个?是贡献者最容易上手的逆向任务。之谜三异步内存流水线的时序规则device_load/device_store/wait等异步指令在反汇编输出中随处可见如 README 示例里device_load ... lsl 1后紧跟wait 0。但等待到底在等谁、乱序窗口多大、何时触发冒险这类时序规则硬件测试目前只能证明行为一致难以写成完备的时序文档。之谜四测试覆盖率的盲区作者在 README 中坦承测试是scattershot散弹式有些指令测试详尽有些只是为了让别的测试跑通才存在且很难看出哪些行为已被覆盖。他的实用建议是故意改坏实现看测试会不会红——这暗示仍存在未被任何测试盯住的角落。之谜五G13 与后续芯片的差异项目标题锁定的是G13M1。M1 Pro/Max、M2 及之后芯片的 GPU 是否有新增指令、修改编码完全不在当前覆盖范围内——这是Apple M1 GPU 逆向通往更广阔战场的一扇门。新手上手指南3 步加入 Apple GPU 逆向第 1 步获取代码无需克隆仓库即可阅读参与开发建议克隆git clone https://gitcode.com/gh_mirrors/ap/applegpu第 2 步跑通反汇编器任何 Mac/Linux 上都能运行只需 Python 3python3 disassemble.py code.bin。想在线体验 Metal 着色器 → G13 汇编的转换流程可看compiler_explorer.py及其调用的compiler_explorer_tools/metal-compile-tool.m编译、metal-archive-extractor.cpp从 Mach-O 存档中提取着色器二进制。第 3 步在 Apple Silicon 上跑硬件测试python3 hwtest.py会自动编译hwtestbed/Makefile对应的 C 助手想手动重编译可用make -C hwtestbed -j8。更轻松的玩法是python3 hwtestbed.py shader code——直接在真 GPU 上执行自己写的一小段指令。给贡献者的路线图建议按投入产出比排序以下三个方向最值得攻克补齐模拟器流控制对照硬件测试输出实现分支与掩码栈语义打通 README 中no flow control 的缺口猎杀?比特挑一条指令的未知字段用assemble.py构造变体输入 hwtest.py观察行为差异是最经典的逆向实验方法补全测试矩阵针对hwtest.py中覆盖薄弱的指令补用例并尝试自动化覆盖度可视化。总结applegpu 项目用反汇编器、模拟器与真机对拍三件套把 Apple G13 GPU 的黑盒剥开了大半——指令编码、寄存器语义、ALU 与内存行为都已被文档化。而流控制闭环、编码表中的未知比特、异步内存时序、测试覆盖率盲区与多代芯片差异构成了这张逆向路线图上的五大待攻克谜团。无论你是 GPU 架构爱好者还是逆向工程新手这里都有一条清晰的上手路径。【免费下载链接】applegpuApple G13 GPU architecture docs and tools项目地址: https://gitcode.com/gh_mirrors/ap/applegpu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考