通用寄存器
loongarch的通用寄存器(General Registers,简称GR)共有32个,为r0-r31。
r0的值恒为0,LA32架构下GR位宽为32bit,LA64架构下GR位宽为64bit。在标准龙芯架构应用程序二进制借口中,r1固定作为存放函数调用返回地址的寄存器。
程序计数寄存器
程序计数寄存器(Program Counter,简称PC)只有1个,记录当前指令的地址。PC寄存器的值不能被直接修改,只能通过转移指令、例外陷入和例外返回指令间接修改。PC的宽度与GR一致。
浮点寄存器
浮点寄存器(Floating-point Registers,简称FR)共有32个,为f0-f31。
每个FR都可以读写,通常情况下FR位宽为64bit,无论是LA32还是LA64,但当操作单精度浮点或字整数浮点指令时,FR位宽为32bit(此时[63:32]位可以是任意值)。基础浮点数指令可以使用32个FR的任何一个。
条件标志寄存器
条件标志寄存器(Condition Flag Register,简称CFR),共有8个,为fcc0-fcc7。
每个CFR都可以读写,CFR位宽为1bit,用于存储浮点比较的结果,当比较结果为真则置1,为假置0。
浮点控制状态寄存器
浮点控制状态寄存器(Floating-point Control and Status Register,简称FCSR),共有4个,为fcsr0-fcsr3。
FCSR位宽均为32bit,其中fcsr1-fcsr3是fcsr0中部分域的别名,即访问fcsr1-fcsr3其实就是访问fcsr0的某些域。
fcsr0的域定义如下:
位 | 名字 | 读写 | 描述 |
---|---|---|---|
4:0 | Enables | RW | The floating-point operation VZOUI exceptions each allow the enable bit to trigger the exception trap. 第4位对应 V, 第3位对应 Z, 第2位对应 O, 第1位对应 U, 第0位对应 I。 |
7:5 | 0 | RO | 保留域。读返回0,且不允许软件改变其值。 |
9:8 | RM | RW | Rounding mode control. It contains 4 legal values, each with the following meaning: 0: RNE, corresponding to roundTiesToEven in IEEE 754-2008; 1: RZ, corresponding to roundTowardZero in IEE 754-2008; 2: RP, corresponding to roundTowardsPositive in IEEE 754-2008; 3: RM, corresponding to roundTowardsNegative in IEEE 754-2008. |
15:10 | 0 | RO | 保留域。读返回0,且不允许软件改变其值。 |
20:16 | Flags | RW | Since the last time the Flags field was cleared by the software, the cumulative status of various floating-point operations VZOUI exceptions that were generated but not caught. Bit 20 corresponds to V, bit 19 corresponds to Z, bit 18 corresponds to O, bit 17 corresponds to U, and bit 16 corresponds to I. |
23:21 | 0 | RO | 保留域。读返回0,且不允许软件改变其值。 |
28:24 | Cause | RW | The VZOUI exception caused by the last floating-point operation. Bit 28 corresponds to V, bit 27 corresponds to Z, bit 26 corresponds to O, bit 25 corresponds to U, and bit 24 corresponds to I. |
31:29 | 0 | RO | 保留域。读返回0,且不允许软件改变其值。 |
fcsr1是Enables域的别名,位置与fcsr0中的一致。
fcsr2是Cause域的别名,位置与fcsr0中的一致。
fcsr3是RM域的别名,位置与fcsr0中的一致。
控制状态寄存器
loongarch共有68个控制状态寄存器(Control and Status Registers,简称GSR)。