ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何读懂AnyPS5生成的registry.json?符号注册表完全指南

如何读懂AnyPS5生成的registry.json?符号注册表完全指南 如何读懂AnyPS5生成的registry.json符号注册表完全指南【免费下载链接】AnyPS5Tool for automatic PS5 executables porting to Linux and Windows项目地址: https://gitcode.com/GitHub_Trending/an/AnyPS5AnyPS5 是一款能把 PS5 可执行文件自动移植到 Linux 与 Windows 的工具。转换时它的relinker组件可以用一个开关生成registry.json——这是一份记录游戏引用了哪些系统符号的符号注册表。读懂它你就能一眼看清一个 PS5 程序到底依赖了哪些系统库、调用了多少个接口是排查兼容性问题时最好用的体检报告。registry.json 是什么一句话它是游戏对外部系统库的全部引用清单。PS5 程序把大量通用能力音频、网络、输入、渲染等拆成了一个个.prx系统库。游戏本体只负责我需要一个叫xxx的函数至于这个函数在哪、怎么实现运行时再去对应的.prx里找。relinker在移植时会把这些待对接的外部引用逐条扫描出来写进registry.json。生成逻辑入口core/relinker/main.cpp真正写出 JSON 的类core/relinker/relinker/src/output/CallRegistryWriter.cpp字段结构定义core/relinker/relinker/include/relinker/output/CallRegistryWriter.hpp小提示relinker结束时会在终端打印一行External prx references: N这个N就是registry.json里记录的条目总数可以拿来快速核对。如何生成 registry.json默认不会生成需要你手动加上--registry开关。以 Linux 输出为例relinker --registry source/input.elf app.elf执行成功后会在输出可执行文件旁边生成一个同名的注册表文件输出文件生成的注册表app.elfapp.registry.jsonapp.exeapp.registry.json完整命令与选项说明见 docs/user/USAGE.md。registry.json 的字段详解整个文件是一个JSON 数组每个元素对应一个被引用的符号。逐字段看nid— 符号的编号NID是 PS5 用来唯一标识一个函数/符号的数字 ID相当于这条记录的身份证号。library— 该符号来自哪个外部系统库.prx比如libSceAcm.prx。这是你最该关注的字段。relocationType— ELF 重定位类型描述这条引用属于哪一类链接操作。relocationOffset— 重定位条目的文件偏移十六进制字符串如0x2F40。️targetSection— 调用目标所在的段名section。targetOffset— 目标地址的文件偏移同样用十六进制表示。callSites— 一个数组列出游戏代码里真正调用这个符号的所有位置偏移例如[0x1200, 0x1800]。✅callSitesResolved— 布尔值true表示所有调用点都已成功解析若为false说明有些调用没能对上值得重点排查。一份典型样例下面是一份简化后的样例方便你对照字段理解具体数值以你实际生成的文件为准[ { nid: 0x1A2B3C4D, library: libSceAcm.prx, relocationType: R_X86_64_JUMP_SLOT, relocationOffset: 0x2F40, targetSection: .rela.plt, targetOffset: 0x3A10, callSites: [0x1200, 0x1800], callSitesResolved: true } ]怎么读这条记录它表示游戏有一个对libSceAcm.prx库中某符号的引用代码里在0x1200和0x1800两个地方调用了它且调用点已全部解析成功。✅读懂 registry.json 的 3 个实用场景清点系统库依赖把所有条目的library字段去重你就得到了这个游戏依赖的全部.prx系统库名单——移植前可以先确认这些库是否都已具备。定位未解析的引用全局搜索callSitesResolved: false。只要有false就意味着有符号没对上号通常是崩溃或报错的根源。判断某功能调用频率callSites数组越长说明这个符号被游戏调用得越频繁高频接口更值得优先保证兼容。小结registry.json就是 AnyPS5 移植流程里的一份符号体检报告用--registry生成每个对象记录一个外部引用核心看library、callSites和callSitesResolved三个字段。掌握了它你就能在运行之前就预判一个 PS5 程序移植的难易程度与潜在风险。【免费下载链接】AnyPS5Tool for automatic PS5 executables porting to Linux and Windows项目地址: https://gitcode.com/GitHub_Trending/an/AnyPS5创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表