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

网站建设3年前发布
42 0 0

2023030615305571c5119229bc20c60b4900e96369dbceba4854771,​想了解更多关于开源的内容,请访问:​,​​51CTO 开源基础软件社区​​,​​https://ost.51cto.com​​,最近龙芯中科宣布,龙芯2K0500开发板已与OpenHarmony(开源鸿蒙系统)完成了适配验证,LoongArch平台实现初步支持OpenHarmony。本系列文章将对loongarch架构进行介绍。,龙芯架构LoongArch是龙芯中科公司自主设计的一种精简指令集计算机(RISC)风格的指令系统架构。其分为32位和64位两个版本,分别称为LA32架构和LA64架构。本文主要对其中的基础部分进行介绍。本文中的主要信息来源于龙芯目前公开的资料。,下图为龙芯架构的典型指令编码格式,大部分指令格式都符合这些格式:,202303061530572646f50470b8cbdb05c561b0b5cb77a8b20dae185,上图中解释:,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资料中没有写出来的指令。本小节中将这些指令列出,其中指令的含义是根据上下文推测出来的。,2023030615305727ea71a69c1b03e6883903a7fbe2d1df63e029170,上图中描述了loongarch中寄存器的使用约定,与其他的架构其实大同小异。有栈指针寄存器,有通用和浮点的传参寄存器,有返回地址寄存器等。下面结合代码进行说明。,以下为一段c语言代码:,对应loongarch汇编如下:,loongarch的栈帧可用下图表示:,20230306153151029d9fd42f02b04f544692a05ecfb1126593c1712,本文介绍了loongarch架构中的一些基础指令,如整数和浮点运算指令、转移指令、访存指令,并结合案例对loongarch汇编语言的写法进行了说明。下一篇文章将会介绍loongarch中的原子指令、栅障指令,及其用法。,​想了解更多关于开源的内容,请访问:​,​​51CTO 开源基础软件社区​​,​​https://ost.51cto.com​

© 版权声明

相关文章