使用DevKit完成汇编代码自动迁移
DevKit Porting Advisor可以自动检查并分析出用户源码中x86汇编代码中需要修改的内容,并给出相应的修改意见。可参考《鲲鹏代码迁移工具用户指南》中最佳实践相关内容。
如下是使用DevKit Porting Advisor完成汇编代码迁移的详细步骤:
- 扫描源码。
- 进入Porting Advisor“源码迁移”菜单进行扫描分析。
- 将欲迁移的源码文件移动至“/opt/portadv/portadmin/sourcecode/”目录下,并单击“开始分析”。
进行分析并得到扫描分析报告。
- 修改源码。
- 进行完源码扫描之后,Porting Advisor工具会根据源码生成源码迁移报告,在报告中点击View Suggestion Code,进入源码文件并得到源码修改意见。
- 根据源码修改意见,单击Quick Fix进行快速修改源码,完成汇编代码迁移工作。下列代码示例展示了x86汇编命令cpuid如何迁移到ARM平台上。
//在x86平台上原代码段: asm volatile("cpuid\n\t" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "0"(1)); //使用工具自动修改后: #if defined __X86_64__ asm volatile("cpuidnt" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "0"(1)); #elif defined __aarch64__ // Suggestion: { eax = 1; GetSupportedCPUID(&eax,&ebx,&ecx,&edx); } #endif
如上所示,上部分为初始源码,在使用Quick Fix之后,便自动改变成下部分代码,并自动生成了ARM代码分支。
由于在鲲鹏平台上没有与cpuid相对应的汇编代码,于是工具会以C语言的方式实现cpuid的功能,如此即可快速完成x86汇编代码的迁移。
父主题: 移植相关问题处理