slli, srli,srai)也进行小小的改动。
ld
双字加载 (Load Doubleword). I-type, RV64I.
从地址 x[rs1] + sign-extend(offset)读取八个字节,写入 x[rd]。
压缩形式: c.ldsp rd, offset; c.ld rd, offset(rs1)
imm | |||||||||||||||||||||||||||||||||
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | rs1 | func3 | rd | opcode | ||||||||||||||||||
name | type | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ld | I | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
例子:
to do
lwu
无符号字加载 (Load Word, Unsigned). I-type, RV64I.
从地址 x[rs1] + sign-extend(offset)读取四个字节,零扩展后写入 x[rd]。
imm | |||||||||||||||||||||||||||||||||
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | rs1 | func3 | rd | opcode | ||||||||||||||||||
name | type | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
lwu | I | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
例子:
to do
sd
sd M[x[rs1] + sext(offset) ]= x[rs2][63: 0]存双字(Store Doubleword). S-type, RV64I.
将 x[rs2]中的 8 字节存入内存地址 x[rs1]+sign-extend(offset)。
压缩形式: c.sdsp rs2, offset; c.sd rs2, offset(rs1)
imm | imm | ||||||||||||||||||||||||||||||||
11 | 10 | 9 | 8 | 7 | 6 | 5 | rs2 | rs1 | func3 | 4 | 3 | 2 | 1 | 0 | opcode | ||||||||||||||||||
name | type | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
sd | S | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
例子:
to do
addiw
addiw x[rd] = sext((x[rs1] + sext(immediate))[31:0])加立即数字(Add Word Immediate). I-type, RV64I.
把符号位扩展的立即数加到 x[rs1],将结果截断为 32 位,把符号位扩展的结果写入 x[rd]。忽略算术溢出。
压缩形式: c.addiw rd, imm
imm | |||||||||||||||||||||||||||||||||
11 | 10 | 9 | 8 | 7 |