add

add

RISC-V असेंबली संदर्भ

lyszt.net add और अन्य 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

विवरण

add दो रजिस्टरों के मानों को जोड़ता है और परिणाम को तीसरे रजिस्टर में संग्रहीत करता है। रजिस्टर प्रोसेसर के अंदर एक छोटा स्लॉट होता है जो एक 32-बिट संख्या रखता है। RISC-V 32 रजिस्टर प्रदान करता है। एक बिट एक 0 या 1 होता है, और 32 बिट 0 से लेकर लगभग चार अरब तक की पूर्ण संख्याओं को कवर करते हैं। अंकगणित रजिस्टरों के बीच होता है और कभी भी सीधे मेमोरी को नहीं छूता।

add का रूप नीचे दिया गया है, और परिणाम rd = rs1 + rs2 होता है। rd गंतव्य रजिस्टर है, जहाँ उत्तर जाता है। rs1 और rs2 स्रोत रजिस्टर हैं, और उनके मान वही रहते हैं।

add rd, rs1, rs2

गंतव्य स्रोत के रूप में भी काम कर सकता है। नीचे दी गई पंक्ति t1 को t0 में जोड़ती है और परिणाम को वापस t0 में रखती है। लूप में चलते योग इस रूप का उपयोग करते हैं।

add t0, t0, t1

एक रजिस्टर अधिकतम 32 बिट रखता है। जब कोई योग उस सबसे बड़े मान से अधिक हो जाता है जो एक रजिस्टर रख सकता है, तो परिणाम एक छोटी संख्या में लपेट जाता है, जैसे 24-घंटे की घड़ी 23:59 से वापस 00:00 पर चली जाती है। यह अतिप्रवाह है, और RISC-V इसके होने पर कोई चेतावनी नहीं देता।

RISC-V मैनुअल कहता है कि कोई भी पूर्णांक संगणनात्मक निर्देश अंकगणितीय अपवाद नहीं उठाता, और आधार निर्देश सेट में कोई अतिप्रवाह जाँच नहीं होती क्योंकि शाखाएँ यह काम कम लागत पर कर देती हैं। अहस्ताक्षरित जोड़ के लिए, add के बाद एक शाखा पर्याप्त है। नीचे दी गई दो पंक्तियों में, शाखा overflow लेबल पर कूद जाती है जब योग किसी ऑपरेंड से कम हो, जो केवल तभी होता है जब योग लपेट गया हो।

add t0, t1, t2
bltu t0, t1, overflow

उदाहरण में, पहली दो पंक्तियाँ li (load immediate) का उपयोग करके स्थिरांक 3 और 4 को t0 और t1 में रखती हैं। फिर add पंक्ति t2 में 7 छोड़ देती है।

उदाहरण

li t0, 3
li t1, 4
add t2, t0, t1   # t2 = 7