mulhsu

mulhsu

Ensamblador RISC-V Referencia

lyszt.net cubre mulhsu y otras instrucciones RISC-V con más detalle.

Formato de codificación

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

Descripción

MUL realiza una multiplicación de XLEN bits×XLEN bits de rs1 por rs2 y coloca los XLEN bits inferiores en el registro destino. MULH, MULHU y MULHSU realizan la misma multiplicación pero devuelven los XLEN bits superiores del producto completo de 2×XLEN bits, para multiplicación con signo×con signo, sin signo×sin signo y rs1×rs2 sin signo. Si se requieren tanto los bits altos como los bajos del mismo producto, la secuencia de código recomendada es: MULH[[S]U] rdh, rs1, rs2; MUL rdl, rs1, rs2 (los especificadores de registro fuente deben estar en el mismo orden y rdh no puede ser el mismo que rs1 o rs2). Las microarquitecturas pueden entonces fusionar estas en una sola operación de multiplicación en lugar de realizar dos multiplicaciones separadas.

ℹ
MULHSU se usa en multiplicación con signo de varias palabras para multiplicar la palabra más significativa del multiplicando (que contiene el bit de signo) con las palabras menos significativas del multiplicador (que son sin signo).

MULW es una instrucción RV64 que multiplica los 32 bits inferiores de los registros fuente, colocando la extensión de signo de los 32 bits inferiores del resultado en el registro destino.

ℹ
En RV64, MUL se puede usar para obtener los 32 bits superiores del producto de 64 bits, pero los argumentos con signo deben ser valores con signo de 32 bits adecuados, mientras que los argumentos sin signo deben tener sus 32 bits superiores a cero. Si no se sabe que los argumentos están extendidos con signo o con ceros, una alternativa es desplazar ambos argumentos a la izquierda 32 bits, luego usar MULH[[S]U].