mulhu

mulhu

RISC-V Ассемблер Ссылка

lyszt.net охватывает mulhu и другие инструкции RISC-V более подробно.

Формат кодирования

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

Описание

MUL выполняет умножение XLEN-бит×XLEN-бит rs1 на rs2 и помещает младшие XLEN бит в регистр назначения. MULH, MULHU и MULHSU выполняют то же умножение, но возвращают старшие XLEN бит полного 2×XLEN-битного произведения, для умножения со знаком×со знаком, без знака×без знака и rs1×без знака rs2. Если требуются как старшие, так и младшие биты одного и того же произведения, рекомендуемая последовательность кода: MULH[[S]U] rdh, rs1, rs2; MUL rdl, rs1, rs2 (спецификаторы регистров-источников должны быть в одном и том же порядке, а rdh не может совпадать с rs1 или rs2). Микроархитектуры затем могут объединить их в одну операцию умножения вместо выполнения двух отдельных умножений.

ℹ
MULHSU используется в многословном умножении со знаком для умножения наиболее значимого слова множимого (которое содержит бит знака) на менее значимые слова множителя (которые без знака).

MULW — это инструкция RV64, которая умножает младшие 32 бита регистров-источников, помещая знаковое расширение младших 32 бит результата в регистр назначения.

ℹ
В RV64 MUL можно использовать для получения старших 32 бит 64-битного произведения, но аргументы со знаком должны быть корректными 32-битными знаковыми значениями, тогда как аргументы без знака должны иметь старшие 32 бита равными нулю. Если неизвестно, что аргументы расширены знаком или нулями, альтернативой является сдвиг обоих аргументов влево на 32 бита, а затем использование MULH[[S]U].