mulhu

mulhu

Assembly RISC-V Referência

lyszt.net aborda mulhu e outras instruções RISC-V com mais detalhes.

Formato de codificação

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

Descrição

MUL realiza uma multiplicação XLEN bits×XLEN bits de rs1 por rs2 e coloca os XLEN bits inferiores no registrador de destino. MULH, MULHU e MULHSU realizam a mesma multiplicação, mas retornam os XLEN bits superiores do produto completo de 2×XLEN bits, para multiplicação com sinal×com sinal, sem sinal×sem sinal e rs1×rs2 sem sinal. Se tanto os bits altos quanto os baixos do mesmo produto forem necessários, a sequência de código recomendada é: MULH[[S]U] rdh, rs1, rs2; MUL rdl, rs1, rs2 (os especificadores de registrador de origem devem estar na mesma ordem e rdh não pode ser o mesmo que rs1 ou rs2). As microarquiteturas podem então fundir essas instruções em uma única operação de multiplicação em vez de realizar duas multiplicações separadas.

ℹ
MULHSU é usada em multiplicação com sinal de múltiplas palavras para multiplicar a palavra mais significativa do multiplicando (que contém o bit de sinal) pelas palavras menos significativas do multiplicador (que são sem sinal).

MULW é uma instrução RV64 que multiplica os 32 bits inferiores dos registradores de origem, colocando a extensão de sinal dos 32 bits inferiores do resultado no registrador de destino.

ℹ
Em RV64, MUL pode ser usada para obter os 32 bits superiores do produto de 64 bits, mas argumentos com sinal devem ser valores de 32 bits com sinal adequados, enquanto argumentos sem sinal devem ter seus 32 bits superiores zerados. Se não se sabe se os argumentos estão estendidos com sinal ou com zero, uma alternativa é deslocar ambos os argumentos 32 bits para a esquerda e então usar MULH[[S]U].