Multiplier = 0xffffffff
Multiplicand = 0xffffffff
Result = 0xFFFFFFFE 00000001 (multiplier * multiplicand)
mulh指令應根據 RISC-Vs pec 給出結果的高 XLEN 位。但是當我mulh t0, a0, a1;使用 multiplier ina0和 multiplicand in運行時a1,結果t0是 0。有人可以解釋為什么嗎?我在 RV32IMAC(FE310 核心)中運行它。
匯編和C代碼如下:
mulh_asm:
mulh t0, a0, a1;
addi a0, x0, 0; // **Break point here to watch t0 value**
ret;
mrest[0] = mulh_asm(0xffffffff, 0xffffffff);
uj5u.com熱心網友回復:
t0 中的結果是 0。有人可以解釋為什么嗎?
mulh用于簽名 × 簽名,所以你在做 -1 × -1!其結果是 1,在 64 位中,即 63 位零后跟一個 1 位——所以自然地,高 32 位(64 位 1)的正確答案是全零。
[期望] 結果 = 0xFFFFFFFE 00000001(乘數 * 被乘數)
Try mulhu,它用于無符號 × 無符號,這將為您提供您期望的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/347746.html
