DevKit Porting Advisor可以自动检查并分析出用户源码中x86汇编代码中需要修改的内容,并给出相应的修改意见。可参考《鲲鹏代码迁移工具用户指南》中最佳实践相关内容。
如下是使用DevKit Porting Advisor完成汇编代码迁移的详细步骤:
进行分析并得到扫描分析报告。
//在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汇编代码的迁移。