x86程序移植到arm平台的四种场景及解决方案简介

由于arm芯片对比x86具备成本优势以及功耗优势,再叠加国产化自主可控需求,很多时候,需要工程师将原有x86平台上可运行的程序移植到arm平台。

这种移植通常分四种场景:主流软件场景、有对应的源码的场景、没有源码但对性能没有要求的场景、没有源码但对性能有要求的场景。

1. 主流软件场景

这种场景下比较简单,因为随着arm生态的不断完善,主流软件,比如openstack、spark、PostgreSQL、MySQL等都已经做好了对ARM的支持。此时按照官方文档或者网上资料的指引操作即可。

2. 有对应源码的场景

对于Java、Python等解释型语言写的程序来说,因为中间层(Java:JVM+字节码;Python:解释器)替上层屏蔽了硬件OS差异,因此迁移比较简单。

而对于C/C++、Go等编译型语言写的程序来说,迁移的过程则要复杂一些,需要替换工具链,依赖库、适配修改编译脚本,移植编译宏、Builtin函数、内联的汇编函数、SIMD相关移植等。工作还是比较繁琐的。

不过,为了提升用户程序的迁移效率,厂家们也推出了相应的工具,比如:华为的鲲鹏DevKit应用迁移工具,阿里的EasyYitian等。有需要的读者可以去它们的官网查阅相关资料。

华为的相关资料的网址:

https://www.hikunpeng.com/document/detail/zh/kunpengdevps/userguide/Plugins_UserGuide/DevKit_Porting_0001.html

阿里的相关资料的网址:

https://help.aliyun.com/zh/ecs/user-guide/easyyitian-migration-tools?spm=a2c4g.11186623.help-menu-25365.d_4_9_7.6fae1636Q4SSsQ

3. 没有源码但对性能没有要求的场景

没有源码的场景比较难搞,但聪明的工程师们还是想出了解决方案。那就是软件界的"同声传译"---动态二进制翻译。

动态二进制翻译技术可以在运行时将一种指令集架构的二进制代码转换成另一种架构的二进制代码。比如Intel的Houdini可以将Arm指令动态翻译为x86,微软和高通合作开发了windows系统的x86->Arm的动态翻译技术。

华为也有一款动态二进制翻译工具ExaGear,可将X86或者Arm32指令翻译成Arm64指令。在官网和公开网站找到了一些说明图,大家可以参考下:

动态二进制翻译把复杂留给工具,简单留给用户。但是它的不好的地方,是会带来性能的损耗,在对性能要求比较高的场景下,就不适用了。

4. 没有源码,但对性能有要求的场景

找不到源码,但对性能还有要求,这个时候怎么办呢?

这时候就不得不祭出逆向工程这个杀器了。也就是从程序反推出逻辑,重构出代码。

这时,可以使用IDA这个工具,可以将机器码反推成汇编代码和C代码。

通过实时Debug,可以推断出程序的运行逻辑。

从而将核心的逻辑重构出来。

不过这种方法对工程师的基本功要求很高,毕竟重构的过程需要工程师在一堆很没有可读性的代码中,像个侦探一样,抽丝剥茧,熟练应用栈、堆、调试、汇编等底层技能来抽丝剥茧。

不过,友情提示一下,看这种代码,如果借助下KIMI、豆包、deepseek等AI助手,则会大大提升效率。如果大家在进行这项工作的话,不妨一试。

相关推荐
华清远见IT开放实验室12 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
执迷不悟82317 小时前
ARM--按键/中断
arm开发
维基框架18 小时前
汽车座舱开发上云 Google的Arm实例解决了什么实际问题
arm开发·人工智能·汽车
Discipline~Hai3 天前
ARM01-ARM体系架构
linux·c语言·arm开发·架构
weixin_446260853 天前
ARM++:面向深度伪造检测器的多域智能体协同可迁移对抗攻击框架
arm开发·人工智能
执迷不悟8233 天前
ARM--启动实现LED
arm开发
linux修理工4 天前
在 ARM 架构的 Armbian 系统上搭建 Strudel 开发环境
arm开发
程序员JerrySUN4 天前
Jetson 刷机深度解析:flash.sh vs l4t_initrd_flash.sh(含安全与磁盘加密对比)
linux·网络·arm开发·安全·系统安全
执迷不悟8234 天前
ARM--汇编指令
汇编·arm开发
2601_954706495 天前
算力上云革新移动终端:ARM 虚拟化云手机底层原理、API 自动化实战与 2026 选型全解
arm开发·智能手机·自动化