没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
2 C 语言与鲲鹏 920 处理器汇编语言混合编程
2.1 实验目的
本实验将通过三个部分介绍 C 调用汇编和 C 内嵌汇编两种混合编程方式以
及 ARM 汇编的一些基础指令,ARM 部分指令的详细介绍以及 Linux 常用命
令请参考附录中的 ARM 指令以及 Linux 常用指令。
第一部分,介绍 C 语言调用汇编实现累加和求值的方法。
第二部分,介绍 C 语言调用汇编实现更复杂的数组选择排序的方法。
第三部分,介绍 C 语言内嵌汇编的使用方法。
2.2 实验设备
华为鲲鹏云服务器
具备网络连接的个人电脑
2.3 实验原理
C 语言调用汇编有两个关键点——调用与传参。对于调用,我们需要在汇编
程序中通过.global 定义一个全局函数,然后该函数就可以在 C 代码中通过
extend 关键字加以生命,使其能够在 C 代码中直接调用。
关于 C 与汇编的混合编程的参数传递,ARM64 提供了 31 个通用寄存器,各
自额用途详见表 1。参数传递用到的是 x0~x7 这 8 个寄存器,若参数个数大
于 8 个则需要使用堆栈来传递参数。
表 1 ARM64 通用寄存器用途
寄存器
用途
x0~x7
传递参数和返回值,多余的参数用堆栈传
递,64 位的返回结果保存在 x0 中。
x8
用于保存子程序的返回地址。
x9~x15
临时寄存器也可叫可变寄存器,无需保存。
x16~x17
子程序内部调用寄存器,使用时不需要保
存,尽量不要使用。
x18
平台寄存器,它的使用与平台相关,尽量
不要使用。
x19~x28
临时寄存器,子程序使用时必须保存。
x29
帧指针寄存器(FP),用于连接栈帧,使
用时必须保存。
x30
链接寄存器(LR),用于保存子程序的返
回地址。
2.4 实验任务操作指导
2.4.1 C 语言调用汇编实现累加和求值
首先使用远程登录工具,登录到鲲鹏 ESC 服务器上,本实例实现的功能是:输
入一个正整数,输出从 0 到该正整数的所有正整数的累加和,输入输出功能在 C
资源评论
吾乂舟
- 粉丝: 13
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功