【发布时间】:2020-04-01 17:09:25
【问题描述】:
问题
在risc-v RV32IM中,对于指令MULHSU,操作数rs1和rs2哪一个是有符号操作数?
背景
RISC-V 指令集手册 第 I 卷:非特权 ISA 文件版本 20190608-Base-Ratified 说出以下内容(靠近第 43 页底部):
MULH、MULHU 和 MULHSU 执行相同的乘法,但返回完整的 2 × XLEN 位乘积的高 XLEN 位,分别用于有符号 × 有符号、无符号 × 无符号和有符号 rs1 × 无符号 rs2 乘法。
所以这表明签名的操作数是rs1。
但是解释性说明(第 43 页底部)说:
MULHSU 用于多字有符号乘法,将乘法器的最高有效字(包含符号位)与被乘数的低有效字(无符号)相乘。
从指令的定义(也是第43页):
31 25 24 20 19 15 14 12 11 7 6 0
+--------+----------+-------------+--------------+-----+--------+
| funct7 | rs2 | rs1 | funct3 | rd | opcode |
+--------+----------+-------------+--------------+-----+--------+
7 5 5 3 5 7
MULDIV multiplier multiplicand MUL/MUL[[S]U] dest OP
我看到乘数是 rs2。所以解释性说明指出带符号的操作数是rs2。
【问题讨论】:
-
你有没有在一个 siive 产品上尝试过,看看它们的实现是什么和/或查看基础源代码来查看它们的实现。从您发布的内容来看,它确实看起来像一个文档错误,另一种方法是询问 risc-v 基金会人员,我假设有一个论坛
-
我认为您刚刚发现了一个文档问题。您应该改为在official github 上报告它。有 clarify which operand is signed vs unsigned for mulhsu 问题来修复正文,但可能他们忘记修复页脚
-
@phuclv,我认为你是对的。我听从了你的建议。
标签: riscv