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].