mulhsu
lyszt.net은 mulhsu 및 기타 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은 rs1과 rs2의 XLEN비트×XLEN비트 곱셈을 수행하고 곱의 하위 XLEN비트를 목적 레지스터에 저장합니다. MULH, MULHU, MULHSU는 동일한 곱셈을 수행하지만 부호 있는×부호 있는, 부호 없는×부호 없는, rs1×부호 없는 rs2 곱셈에 대해 전체 2×XLEN비트 곱의 상위 XLEN비트를 반환합니다. 동일한 곱의 상위 비트와 하위 비트가 모두 필요한 경우 권장되는 코드 시퀀스는 다음과 같습니다: MULH[[S]U] rdh, rs1, rs2; MUL rdl, rs1, rs2 (소스 레지스터 지정자는 동일한 순서여야 하며 rdh는 rs1 또는 rs2와 같을 수 없습니다). 그러면 마이크로아키텍처는 두 번의 개별 곱셈을 수행하는 대신 이를 단일 곱셈 연산으로 융합할 수 있습니다.
ℹ
MULHSU는 다중 워드 부호 있는 곱셈에서 피승수의 최상위 워드(부호 비트를 포함)와 승수의 하위 워드(부호 없음)를 곱하는 데 사용됩니다.
MULW는 소스 레지스터의 하위 32비트를 곱하고 결과의 하위 32비트 부호 확장을 목적 레지스터에 저장하는 RV64 명령어입니다.
ℹ
RV64에서 MUL은 64비트 곱의 상위 32비트를 얻는 데 사용할 수 있지만, 부호 있는 인수는 적절한 32비트 부호 있는 값이어야 하고 부호 없는 인수는 상위 32비트가 0으로 클리어되어 있어야 합니다. 인수가 부호 확장 또는 제로 확장되었는지 알 수 없는 경우, 대안으로 두 인수를 32비트 왼쪽으로 시프트한 다음 MULH[[S]U]를 사용합니다.