找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

跨架构软件适配问题参考

网页链接
这是针对苹果m系列芯片的适配指南,其中提到的常见适配问题和解决思路对龙芯、飞腾适配也有参考价值
回复

使用道具 举报

大神点评(5)

Maple 楼主 2024-9-3 10:56:23 显示全部楼层
1、苹果的芯片使用的指令集为arm64。
2、如果App可以在目标平台正常运行,说明你的工作已经完成(后面提到不要以为编译成功就能万事大吉,可能有些功能模块还是有问题,需要在目标平台上逐一做完整的测试)。
3、arm64的字节序和x86相同,无需处理字节序转换问题。
4、如果代码已移植到iOS,则可视为已完全移植到arm64,因为iOS与苹果芯片Mac使用相同处理器架构(安卓也使用arm指令集,所以适配过手机端的代码只需做操作系统的相关适配即可直接编译到arm电脑上运行)。
5、Intel的页面大小为4kB,arm为16kB。
6、如果本意为针对操作系统平台(mac和simulator)的预处理宏/条件编译代码被写成针对x86指令集的,那么应该改为针对操作系统的。针对处理器指令集的汇编代码可改为在独立的汇编文件中使用。
7、针对处理器指令集的代码应包裹在#if语句中,所有只能在x86上实现的逻辑必须提供另一种实现。要尽可能多地利用系统的接口和框架实现功能,从而提高运行速度和开发效率。
8、不同指令集的二进制文件无法互相链接,因此,项目依赖的所有静态和动态库都要编译成目标平台或通用二进制文件,才能用来构建项目。开发者要联系这些库的开发者,要求提供适配的版本。
9、有些低级api的一些执行细节在不同指令集上不同,因此要尽量避免使用低级api。
10、测试代码应同时在多个目标指令集运行,并注意测试结果的一致性。如果更换指令集后性能下降严重,请留意代码中是否有针对某种处理器的特殊优化。
11、要注意大小核优化,避免使用自旋锁和忙碌等待。
12、一个进程内的所有代码应尽量使用相同指令集。如果应用有插件功能,尽量使用进程外插件,这样不会受插件的CPU指令集限制,并提供更好的安全性和稳定性。
13、编译脚本和配置应兼容所有目标指令集,最好不做指令集相关配置,以防止无法编译的情况发生。
回复 支持 反对

使用道具 举报

Ddyrinsyk 2024-9-3 10:57:01 显示全部楼层
这个建议不错
回复 支持 反对

使用道具 举报

Maple 楼主 2024-9-3 10:57:52 显示全部楼层
跨架构软件适配问题参考-1.jpg
跨架构软件适配问题参考-2.jpg
回复 支持 反对

使用道具 举报

Michaelcugh 2024-9-3 10:58:11 显示全部楼层
跨架构软件适配问题参考-1.jpg
回复 支持 反对

使用道具 举报

Jeeromeol 2024-9-3 10:58:42 显示全部楼层
用javascript

跨架构软件适配问题参考-1.jpg
回复 支持 反对

使用道具 举报

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 推荐