使用DevKit完成汇编代码自动迁移

DevKit Porting Advisor可以自动检查并分析出用户源码中x86汇编代码中需要修改的内容,并给出相应的修改意见。可参考《鲲鹏代码迁移工具用户指南》中最佳实践相关内容。

如下是使用DevKit Porting Advisor完成汇编代码迁移的详细步骤:

  1. 扫描源码。

    1. 进入Porting Advisor“源码迁移”菜单进行扫描分析。
    2. 将欲迁移的源码文件移动至“/opt/portadv/portadmin/sourcecode/”目录下,并单击“开始分析”。

      进行分析并得到扫描分析报告。

  2. 修改源码。

    1. 进行完源码扫描之后,Porting Advisor工具会根据源码生成源码迁移报告,在报告中点击View Suggestion Code,进入源码文件并得到源码修改意见。
    2. 根据源码修改意见,单击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汇编代码的迁移。