13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

loongarch架构介绍—基础指令(一)

​​想了解更多关于开源的内容,请访问:​​

创新互联-专业网站定制、快速模板网站建设、高性价比平邑网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式平邑网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖平邑地区。费用合理售后完善,十年实体公司更值得信赖。

​​ 开源基础软件社区​​

​​https://ost.51cto.com​​

前言

最近龙芯中科宣布,龙芯2K0500开发板已与OpenHarmony(开源鸿蒙系统)完成了适配验证,LoongArch平台实现初步支持OpenHarmony。本系列文章将对loongarch架构进行介绍。

龙芯架构LoongArch是龙芯中科公司自主设计的一种精简指令集计算机(RISC)风格的指令系统架构。其分为32位和64位两个版本,分别称为LA32架构和LA64架构。本文主要对其中的基础部分进行介绍。本文中的主要信息来源于龙芯目前公开的资料。

1、指令编码格式

下图为龙芯架构的典型指令编码格式,大部分指令格式都符合这些格式:

上图中解释:

2、指令汇编格式

loongarch的指令汇编格式主要包括指令名和操作数这两部分,其中指令名格式比较特别。loongarch中指令名可以有前缀和后缀字母,前缀字母有:

后缀字母有:

举例如下:

3、基础指令介绍

(1)整数运算类

loongarch中有32个通用寄存器,LA32和LA64中分别为32位和64位长度。loongarch中可用这些寄存器执行整数类的指令。

loongarch支持基本的整数运算,有:

(2)浮点运算类

loongarch中有32个浮点寄存器,在LA32和LA64中均为64位。loongarch中可用这些寄存器进行浮点类指令。

loongarch中支持基本的浮点运算,有:

(3)访存指令

和一般RISC一样,loongarch中通过load/store类指令进行访存,有:

(4)转移指令

下面对loongarch中的转移指令进行介绍:

(5)一些补充的基础指令

在阅读linux上loongarch架构相关代码的时候,遇到了一些loongarch资料中没有写出来的指令。本小节中将这些指令列出,其中指令的含义是根据上下文推测出来的。

4、汇编案例说明

上图中描述了loongarch中寄存器的使用约定,与其他的架构其实大同小异。有栈指针寄存器,有通用和浮点的传参寄存器,有返回地址寄存器等。下面结合代码进行说明。

以下为一段c语言代码:

...
extern long
nested(long a, long b, long c, long d,
long e, long f, long g, long h, long i);

long normal(void) {
return nested(1, 2, 3, 4, 5, 6, 7, 8, 9);
}

对应loongarch汇编如下:

normal:
// 分配栈帧
addi.d $sp, $sp, -32
// 传参9,传参寄存器不够,储存在栈上
addi.w $t0, $zero, 9
stptr.d $t0, $sp, 0
// 传参8-1,使用传出寄存器a7-a0
addi.w $a7, $zero, 8
addi.w $a6, $zero, 7
addi.w $a5, $zero, 6
addi.w $a4, $zero, 5
addi.w $a3, $zero, 4
addi.w $a2, $zero, 3
addi.w $a1, $zero, 2
addi.w $a0, $zero, 1

// 将返回地址保存到栈上
st.d $ra, $sp, 24

// 调用nested函数
bl %plt(nested)

// 恢复返回地址到ra
ld.d $ra, $sp, 24

// 恢复栈帧
addi.d $sp, $sp, 32

// 函数返回
jr $ra

loongarch的栈帧可用下图表示:

总结

本文介绍了loongarch架构中的一些基础指令,如整数和浮点运算指令、转移指令、访存指令,并结合案例对loongarch汇编语言的写法进行了说明。下一篇文章将会介绍loongarch中的原子指令、栅障指令,及其用法。

​​想了解更多关于开源的内容,请访问:​​

​​ 开源基础软件社区​​

​​https://ost.51cto.com​​


本文标题:loongarch架构介绍—基础指令(一)
文章源于:http://cdbrznjsb.com/article/cdojogo.html

其他资讯

让你的专属顾问为你服务