,想了解更多关于开源的内容,请访问:,51CTO 开源基础软件社区,https://ost.51cto.com,最近龙芯中科宣布,龙芯2K0500开发板已与OpenHarmony(开源鸿蒙系统)完成了适配验证,LoongArch平台实现初步支持OpenHarmony。本系列文章将对loongarch架构进行介绍。,龙芯架构LoongArch是龙芯中科公司自主设计的一种精简指令集计算机(RISC)风格的指令系统架构。其分为32位和64位两个版本,分别称为LA32架构和LA64架构。本文主要对其中的基础部分进行介绍。本文中的主要信息来源于龙芯目前公开的资料。,下图为龙芯架构的典型指令编码格式,大部分指令格式都符合这些格式:,
,上图中解释:,loongarch的指令汇编格式主要包括指令名和操作数这两部分,其中指令名格式比较特别。loongarch中指令名可以有前缀和后缀字母,前缀字母有:,后缀字母有:,举例如下:,loongarch中有32个通用寄存器,LA32和LA64中分别为32位和64位长度。loongarch中可用这些寄存器执行整数类的指令。,loongarch支持基本的整数运算,有:,loongarch中有32个浮点寄存器,在LA32和LA64中均为64位。loongarch中可用这些寄存器进行浮点类指令。,loongarch中支持基本的浮点运算,有:,和一般RISC一样,loongarch中通过load/store类指令进行访存,有:,下面对loongarch中的转移指令进行介绍:,在阅读linux上loongarch架构相关代码的时候,遇到了一些loongarch资料中没有写出来的指令。本小节中将这些指令列出,其中指令的含义是根据上下文推测出来的。,
,上图中描述了loongarch中寄存器的使用约定,与其他的架构其实大同小异。有栈指针寄存器,有通用和浮点的传参寄存器,有返回地址寄存器等。下面结合代码进行说明。,以下为一段c语言代码:,对应loongarch汇编如下:,loongarch的栈帧可用下图表示:,
,本文介绍了loongarch架构中的一些基础指令,如整数和浮点运算指令、转移指令、访存指令,并结合案例对loongarch汇编语言的写法进行了说明。下一篇文章将会介绍loongarch中的原子指令、栅障指令,及其用法。,想了解更多关于开源的内容,请访问:,51CTO 开源基础软件社区,https://ost.51cto.com
© 版权声明
文章版权归作者所有,未经允许请勿转载。