---
title: 单指令转换
description: "本示例主要是演示如何使用鲲鹏DevKit迁移工具的源码迁移功能进行嵌入式汇编单指令转换，帮助用户基于该工具快速实现源码迁移嵌入式汇编单指令转换。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/demo/KunpengDevKitDsug_0010.html
sourcePath: /source/zh/kunpengdevps/portingadvisor/demo/KunpengDevKitDsug_0010.html
indexId: d95c7cdb11cb476be3479ae5f890ce9abd89ac1c45c88def0ac0688c081a05f071
---
# 单指令转换

本示例主要是演示如何使用鲲鹏DevKit迁移工具的源码迁移功能进行嵌入式汇编单指令转换，帮助用户基于该工具快速实现源码迁移嵌入式汇编单指令转换。

#### 前提条件

已安装鲲鹏DevKit。


#### 扫描源代码

1. 从GitHub(https://github.com/kunpengcompute/devkitdemo/tree/main/Porting_advisor/testdemo/asm_trans/single_inline_asm)或Gitee(https://gitee.com/kunpengcompute/devkitdemo/tree/main/Porting_advisor)下载源码包，获取待使用的代码样例。
  下载的源码包为devkitdemo-main.zip，解压后的“./devkitdemo-main/Porting_advisor/testdemo/asm_trans/single_inline_asm”为源码迁移的待扫描代码。

2. 在进行源码迁移前，请在x86平台编译修改前的代码。进入实际源码存放目录，以demo_single_inline_asm为例。
  执行gcc编译生成二进制文件a.out，并执行./a.out生成结果，如图1所示。 图1 执行编译及二进制文件生成结果

3. 登录鲲鹏DevKit工具，在左侧列表中选择“迁移 > 源码迁移”进入源码迁移任务创建页面。
  源码迁移服务选择“架构源码迁移”，然后单击“上传”，上传已下载的single_inline_asm文件夹。其他选项根据实际情况进行选择，如图2所示。

  图2 扫描分析界面

4. 单击“开始迁移”，进行分析并得到扫描分析报告，如图3所示。
  图3 架构源码迁移报告


#### 修改源代码

1. 单击源码迁移报告页面中的“查看建议源码”，如图4所示。
  图4 源码迁移建议

2. 单击左侧“文件列表”框中的内容进行源代码查看，如图5所示。
  图5 文件列表

3. 根据迁移报告修改文件。在“源码迁移建议”页面，检查文件的修改建议，并根据建议进行源代码修改。
  在“源码迁移建议”页面，查看swap.c文件的修改建议，如图6所示。

  图6 swap.c修改建议

  根据以上建议，单击“Quick Fix > 替换成建议代码”修改后的代码如图7所示（修改时进行了x86_64分支和aarch64分支的区分处理）。

  图7 Quick Fix后的代码

  根据“Description”里的Note提示检视“Suggestion”里面的替换代码是否合适。

  如果根据Note检查建议代码通过后，请删除注释符“//”。修改后的代码如图8所示。

  图8 修改后的代码

4. 根据迁移报告修改文件。在“源码迁移建议”页面，检查文件的修改建议，并根据建议进行源代码修改。
  在“源码迁移建议”页面，查看Makefile文件的修改建议，如图9所示。

  图9 Makefile修改建议

  根据以上建议，Makefile文件中编译命令需增加选项内容“FLAGS = -fsigned-char”。

  图10 修改后代码


#### 编译

1. 使用SSH远程登录工具登录服务器，执行以下命令进入源码存放路径。

```
cd
/opt
/DevKit/workspace/devadmin/porting/sourcecode/single_inline_asm
```


  /opt：工具安装目录，请根据实际情况替换。

2. 执行make编译生成二进制文件swap，并运行./swap生成结果，运行结果与x86平台一致，表示源码迁移成功，如图11所示。
  图11 鲲鹏平台编译结果

  swap.c文件为鲲鹏DevKit迁移工具执行Quick Fix之后产生的文件，在鲲鹏平台上对该文件执行编译生成二进制文件。 当鲲鹏平台和x86平台对二进制文件执行产生的结果一致时，源码迁移成功。
