mulhsu

mulhsu

تجميع RISC-V مرجع

يغطي 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 ضربًا بعرض 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].