硬核知识,C/C++移植法则分享

随着移动互联网和物联网技术的兴起,网络加密性要求以及HTTPS 流量不断提升,x86架构越发难以满足企业的需求,地位变得越来越不稳固。

近年来,在ARM优势急速凸显后,x86应用向ARM的迁移也成为一种趋势。但软件迁移环节中无数痛点的出现,也让软件迁移陷入被动之地。

迁移准备、迁移分析、编译迁移、性能调优、测试认证五大步骤是x86向ARM软件迁移的必经之路。而在C/C++代码迁移、Java/Python代码迁、Maven仓软件构建、软件包迁移几大语言迁移体系中,C/C++编译移植为“硬核点”。作为典型的编译型语言,C/C++开发程序从X86到ARM需要重新进行加工编译。

究其根源,引发移植问题的主要原因有三:

  • 首先是架构差异,x86和鲲鹏处理器(aarch64)属于不同的架构,编译器通常会自定义对应各自的编译宏、编译选项;

  • 其次是指令集的差异,x86是复杂指令集 ,而鲲鹏处理器是精简指令集,指令集差异导致汇编指令的不同,进而需要进行汇编指令的迁移;

  • 第三是向量寄存器的差异,x86和鲲鹏处理器使用向量寄存器不同,向量指令集也存在差异。

作为最为硬核的迁移语言,C/C++代码在迁移中也有诸多问题存在,最具代表性的五类迁移问题如下

  • 编译脚本和编译选项的移植。在其中,需要修改的差异化编译大多都有一个特点,一般与当前编译平台属性强相关,由于平台属性差异才引入移植修改,这些编译选项一般以–m开头;

  • 编译宏的移植。编译宏可理解为编译器去编译和执行当前平台对应分支的路标,一般分为编译器自定义的宏和用户自定义宏两类,两类宏的编译移植方式各不相同;

  • builtin函数问题。builtin函数可用来优化编译结果,还可实现一些简单快捷的功能方便程序编写。这些函数都以__builtin开头;

  • 硬核难点——内联汇编移植,常用迁移方法有汇编指令方式替换以及builtin函数替换两种;

  • SSE intrinsic函数移植。一般在多媒体技术开发以及数学矩阵库中应用较多的SSE intrinsic函数移植较为复杂,为重难点。

那么,如何获取源码、准备编译环境、如何替换依赖库以便于可执行程序的安装部署?C/C++语言中,如何达到builtin函数的快捷优化?怎样真正触达内联汇编函数移植的硬核点?

站在巨人的肩膀上或许是寻找答案的最优捷径。

18城鲲鹏创新中心开发者创享日已启动

华为在计算产业的成就有目共睹,聚焦于鲲鹏和昇腾处理器、鲲鹏云服务和AI云服务等领域的技术创新,立足于“硬件开放、软件开源、使能伙伴”的初心,越来越多的开发者加入到鲲鹏生态中共同推动计算产业的发展。依托于深厚的技术底座,华为鲲鹏也积累了丰富的迁移实战经验,为开发者的迁移之路铺平道路。

7月11日,「18城鲲鹏创新中心开发者创享日·江苏鲲鹏生态创新中心专场」将在线上为开发者带来一场专业的技术盛会。

本次活动将从整体的软件迁移出发,触达C/C++、JAVA/Python等高级语言移植等软件迁移核心。针对典型移植类问题进行分析,重点介绍各类移植问题的迁移方法,为开发者带来最详尽的软件迁移指导。

参会收益

  • 与技术大牛共同实操,实现基于 C/C++ 代码的自动迁移;

  • 学习在代码迁移、应用迁移的过程中遇到的问题及解决思路;

  • 了解更多适配开发者的鲲鹏开发者套件,并熟悉使用方法;

  • 学习常用软件在 ARM 架构上的编译及运行测试等内容;

  • 学习使用鲲鹏社区专为开发者所提供的大量的兼容鲲鹏计算平台的开源软件包。

戳原文,即报名

©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值