---
title: 使用DevKit完成汇编代码自动迁移
description: "鲲鹏DevKit中的迁移工具可以自动检查并分析出用户源码中x86汇编代码需要修改的内容，并给出相应的修改意见。可参考《鲲鹏DevKit 迁移工具 用户指南(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/sourcecodeporting/DevKit_Porting_0001.html)》中最佳实践相关内容。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenggrf/codeprtr/kunpengtaishanporting_12_0087.html
sourcePath: /source/zh/kunpenggrf/codeprtr/kunpengtaishanporting_12_0087.html
indexId: ebcf87569c0b1274a61496874b63e2e223f8a839652af35e8017c3f212975cdf65
---
# 使用DevKit完成汇编代码自动迁移

鲲鹏DevKit中的迁移工具可以自动检查并分析出用户源码中x86汇编代码需要修改的内容，并给出相应的修改意见。可参考《鲲鹏DevKit 迁移工具 用户指南(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/sourcecodeporting/DevKit_Porting_0001.html)》中最佳实践相关内容。

如下是使用鲲鹏DevKit中的迁移工具完成汇编代码迁移的详细步骤：

1. 扫描源码。

  a. 进入鲲鹏DevKit页面左侧选择“源码迁移”，进入创建迁移任务区进行扫描分析。
  b. 将欲迁移的源码文件移动至“/opt/portadv/portadmin/sourcecode/”目录下，并单击“开始分析”。
    进行分析并得到扫描分析报告。

2. 修改源码。

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