Files
neulacpu/lacpu
..
2023-05-12 22:22:42 +08:00
2023-05-23 12:09:45 +08:00
2023-05-22 13:34:31 +08:00
2023-05-12 22:22:42 +08:00

指令完成情况

指令格式

op6

  • 0 1 0 开头,0 1 1 - 1 1 1。共 5 项:jirl, b, bl, beq, bne
  • 0 1 1 开头,0 0 0 - 0 1 1。共 4 项:blt, bge, bltu, bgeu

op7

  • 0 0 0 1 开头,0 1 0, 1 1 0。共 2 项:lu12i.w, pcaddu12i

op10

  • 0 0 0 0 0 0 1 开头, 0 0 0 - 1 1 1 中间有缺项。 共 6 项:slti, sltui, addi.w andi, ori, xori

  • 0 0 1 0 1 0 0 开头,0 0 0 - 1 1 0。共 6 项:ld.b, ld.h, ld.w, st.b, st.h, st.w

  • 0 0 1 0 1 0 1 开头,0 0 0 - 0 0 1。共 3 项:ld.bu, ld.hu, preld

op17

  • 0 0 0 0 0 0 0 0 0 0 0 1 开头,0 0 0 0 0 - 1 0 0 0 0 中间有缺项。共 11 项:add.w, sub.w, slt, sltu, nor, and, or, xor, sll.w, srl.w, sra.w
  • 0 0 0 0 0 0 0 0 0 0 0 1 开头,1 1 0 0 0 - 1 1 0 1 0 。共 3 项mul.w, mulh.w, mulh.wu
  • 0 0 0 0 0 0 0 0 0 0 1 0 开头,0 0 0 0 0 - 0 0 0 1 1。共 4 项div.w, mod.w, div.wu, mod.wu
  • 0 0 0 0 0 0 0 0 0 1 0 0 开头,0 0 - 1 0 + 0 0 1。共 3 项:slli.w, srli.w, srai.w
  • 0 0 1 1 1 0 0 0 0 1 1 1 开头,0 0 1 0 0 - 0 0 1 0 1 。共 2 项dbar, ibar

op22

  • 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 开头。共 3 项rdcntid.w, rdcntvl.w, rdcntvh.w

alu_op

add.w, addi.w, pcaddu12i, ld.b, ld.h, ld.bu, ld.hu, ld.w, st.b, st.h, st.w, b, bl, jirl

sub.w

slt, sltu, stli, sltui

and, andi

nor

or, ori

xor, xori

sll.w, slli.w

srl.w, srli.w

sra.w, srai.w

lui12i.w

简单整理

算数运算类

指令 格式 说明
ADD.W add.w rd, rj, rk
SUB.W sub.w rd, rj, rk
ADDI.W addi.w rd, rj, si12 si12 符号扩展 32 位
LU12I.W lu12i.w rd, si20 将 si20 最低位连接 12'b0 符号扩展
SLT slt rd, rj, rk 如果前者小于后者 GR[rd] 置 1
SLTU sltu rd, rj, rk
SLTI slt i rd, rj, si12
SLTUI sltu i rd, rj, si12
PCADDU12I pcaddu12i rd, si20 最低位连接 12'b0
AND and rd, rj, rk
OR or rd, rj, rk
NOR nor rd, rj, rk
XOR xor rd, rj, rk
ANDI and i rd, rj, ui12 ui12 立即数零扩展
ORI ori rd, rj, ui 12
XORI xori rd, rj, ui12
- NOP andi r0, r0, 0
MUL.W mul.w rd, rj, rk 操作数视为有符号数,结果符号扩展
MULH.W mulh.w rd, rj, rk 操作数视为有符号数,结果的 [63:32] 符号扩展
MULH.WU mulh.wu rd, rj, rk 操作数视为无符号数
DIV.W div.w rd, rj, rk 操作数视为有符号数,结果符号扩展
MOD.W mod.w rd, rj, rk
DIV.WU div.wu rd, rj, rk 操作数视为无符号数
MOD,WU mod.wu rd, rj, rk

移位运算类

指令 格式 说明
SLL.W sll.w rd, rj, rk 逻辑左移结果符号扩展GR[rk][4:0]
SRL.W srl.w r d, rj, rk
SRA.W sra.w rd, rj, rk 算数右移,结果符号扩展
SLLI.W slli.w rd, rj, ui5
SRLI.W srli.w rd, rj, ui5
SRAI.W srai.w rd, rj, ui5

转移指令

指令 格式 说明
- BEQ beq rj, rd, offs16
- BNE bne rj, rd, offs16
- BLT blt rj, rd, offs16 操作数视为有符号数
- BGE bge rj, rd, offs16 操作数视为有符号数
- BLTU bltu rj, rd, of fs16
- BGEU bgeu rj, rd, offs16
B
BL
JIRL

访存指令

指令 格式 说明
LD.B
LD.H
LD.W
LD.BU
LD.HU
ST.B
ST.H
ST.W
PRELD

原子访存指令

指令 格式 说明
LL.W
SC.W

栅障指令

指令 格式 说明
DBAR
IBAR

其他杂项指令

指令 格式 说明
SYSCALL
BREAK
RDTIMEL.W
RDTIMEH.W
RDCNTID