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 rs1 को rs2 से XLEN-बिट×XLEN-बिट गुणा करता है और निचले XLEN बिट्स को गंतव्य रजिस्टर में रखता है। MULH, MULHU, और MULHSU वही गुणा करते हैं लेकिन पूर्ण 2×XLEN-बिट गुणनफल के ऊपरी XLEN बिट्स लौटाते हैं, क्रमशः signed×signed, unsigned×unsigned, और rs1×unsigned rs2 गुणा के लिए। यदि एक ही गुणनफल के उच्च और निम्न दोनों बिट्स आवश्यक हों, तो अनुशंसित कोड अनुक्रम है: MULH[[S]U] rdh, rs1, rs2; MUL rdl, rs1, rs2 (स्रोत रजिस्टर स्पेसिफायर समान क्रम में होने चाहिए और rdh rs1 या rs2 के समान नहीं हो सकता)। माइक्रोआर्किटेक्चर तब इन्हें दो अलग-अलग गुणा करने के बजाय एकल गुणा ऑपरेशन में संयोजित कर सकते हैं।

ℹ
MULHSU का उपयोग बहु-शब्द signed गुणा में गुण्य के सबसे महत्वपूर्ण शब्द (जिसमें चिह्न बिट होता है) को गुणक के कम महत्वपूर्ण शब्दों (जो unsigned हैं) से गुणा करने के लिए किया जाता है।

MULW एक RV64 निर्देश है जो स्रोत रजिस्टरों के निचले 32 बिट्स को गुणा करता है और परिणाम के निचले 32 बिट्स के चिह्न विस्तार को गंतव्य रजिस्टर में रखता है।

ℹ
RV64 में, MUL का उपयोग 64-बिट गुणनफल के ऊपरी 32 बिट्स प्राप्त करने के लिए किया जा सकता है, लेकिन signed आर्ग्युमेंट उचित 32-बिट signed मान होने चाहिए, जबकि unsigned आर्ग्युमेंट के ऊपरी 32 बिट्स शून्य होने चाहिए। यदि आर्ग्युमेंट के sign- या zero-extended होने की जानकारी न हो, तो एक विकल्प है दोनों आर्ग्युमेंट को 32 बिट्स बाईं ओर शिफ्ट करना, फिर MULH[[S]U] का उपयोग करना।