loongarch架构之指令集

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

龙芯架构LoongArch是一种精简指令集计算机(RISC)。


提示:以下是本篇文章正文内容,下面案例可供参考

一、龙芯架构是什么?

1、龙芯架构具有RISC指令架构的典型特征。它的指令长度固定且编码格式规整,绝大多数指令只有两个源操作数和一个目的操作,采用load/store架构,仅有load/store访存指令可以访问内存,其他至零至的操作对象均是处理器内部的寄存器或指令码中的立即数。

2、龙芯架构分为32位和64位两个版本,分别LA32架构和LA64架构,LA64架构应用级向下二进制兼容LA32架构。

二、指令编码格式

1.寄存器

基础整数指令涉及的寄存器包括通用寄存器和程序计数器如下图:

1、通用寄存器 GR 有32个,记为r0-r31,其中第0号寄存器r0的值恒为 a GR 的位宽记作 GRLEN 。LA32架构下 GR 的位宽是32比特,LA64架构下 GR 的位宽是64比特。基础整数指令与通用寄存器存在正交关系。即从架构角度而言,这些指令中任一个寄存器操作数都可以采用32个 GR 中的任一个。唯一的例外是 BL 指令中隐含的目的寄存器一定是第1号寄存器r1。在标准的龙芯架构应用程序二进制接口( Application Binary Interface ,简称 ABD 中,r1固定作为存放函数调用返回地址的寄存器。

2、PC 只有1个,记录着当前指令的地址。 PC 寄存器不能被指食直接修改,它只能被转移指令、例外陷入和例外返回指令间接修改。不过, PC 寄存器可以作为一些非转移类指令的源操作数而被直接读取。 PC 的 宽度总是与 GR 的宽度一致。

2.指令编码要求

1、龙芯架构中的所有指令均采用32位固定长度,且指令的地址都要求4字节边界对齐。当指令地址不对齐时将出发地址异常。

2、指令编码风格是所有寄存器操作数域都是从第0比特开始从低到高依次摆放。操作码都是从第31比特开始从高到低摆放。如果指令中包含有立即数操作数,那么立即数域位于寄存器和操作码域之间,根据不同指令类型有不同长度。具体来说,包含9种典型的指令编码格式,即3种不含立即数的编码格式2R、3R、4R,以及6种含有立即数的编码格式2R112、2R114、2R116、IR121、I26、

3.指令汇编助记格式

首先,通过前缀字母来区分非向量指令和向量指令,整数和浮点指令。所有128位向量指令的指令名以字母“V”开头;所有256位向量指令名以字母“XV”开头。所有非向量指令字母以“F”开头;所有128位向量浮点指令名以“VF”开头;所有256位向量浮点指令以“XVF”开头。

其次,绝大多数指令通过指令名中“.xx”形式的后缀来表示指令的操作对象。例如,指令“MULW.D.WU rd,rj,rk”中的 .D对应的操作数rd,.WU对应的源操作数rj和rk,表明这个乘法是将两个无符号字相乘,得到的双字结果写入rd中。为了方便使用,龙芯采用一种指令缩写规则:

 由于指令较多下图是指令目录:


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。