【问题标题】:RISC-V: S-format instructions tableRISC-V:S格式指令表
【发布时间】:2017-10-30 01:38:16
【问题描述】:

我有这张 S 格式指令表。你能解释一下imm[11:5]funct3 是什么吗?我知道funct 以位为单位表示它的大小,有时它是 000 或 010。我不知道它为什么在那里。此外,imm[11:5] 也是全 0 的 7 位。

请帮忙!

【问题讨论】:

  • 请注明您已经研究过的内容。此外,最好在问题本身中包含表格,而不是链接图像。
  • 请参阅 riscv-spec-v2.2pdf 中的第 2.2 节,以及相同的第 19 章。

标签: riscv instruction-set


【解决方案1】:

imm[4:0]imm[11:5] 表示立即操作数的位表示的封闭间隔。

S格式用于对存储指令进行编码,即:

sX rs2, offset(r1)

有不同类型的存储指令,例如store-byte (sb), store-half-word (sh), store-word (sw), funct3 部分用于编码类型(即0b00 -> sb0b010 -> sw0b011 -> sd 等)。这允许只使用一个(主要)操作码,同时仍然具有多种类型的存储指令 - 而不必浪费几个(主要)操作码。 IOW,funct3 对指令的次要操作码进行编码。

立即数操作数编码偏移量。如果您问自己为什么要这样拆分-它可以增加编码中其余部分与其他指令格式的相似性。例如,操作码、rs1 和funct3 部分在R-type、I-type 和B-type 指令格式中位于完全相同的位置。 rs2 部分布局与 R 型和 B 型指令格式共享。这些相似之处有助于简化指令解码器。

这意味着偏移量是 12 位宽并且是伪代码:

offset = sign_ext(imm[11:5] << 5 | imm[4:0])

另见RISC-V Base specification(2019-06-08 批准)第 2.6 节(加载和存储指令)中的第一个图:

【讨论】:

    猜你喜欢
    • 2018-12-15
    • 2018-11-22
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2014-12-10
    • 2022-08-17
    相关资源
    最近更新 更多