or

or

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

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

विवरण

or एक बिटवाइज़ निर्देश है, इसलिए यह एक रजिस्टर के 32 बिट्स पर स्वतंत्र रूप से काम करता है (and पृष्ठ इसे समझाता है)। किसी बिट स्थिति पर परिणाम 1 होता है यदि कोई भी इनपुट बिट 1 है या दोनों हैं। परिणाम केवल तब 0 होता है जब दोनों इनपुट 0 हों। नीचे दिया गया रूप इसे rs1 और rs2 की सभी 32 स्थितियों पर लागू करता है और परिणाम को rd में लिखता है।

or rd, rs1, rs2

OR बिट्स को सेट करता है। एक बिट को चालू करने और बाकी को वैसे ही छोड़ने के लिए, मान को ऐसे मास्क के साथ OR करें जिसमें केवल उसी स्थिति में 1 हो। एक रजिस्टर में पैक की गई सेटिंग्स और फ़्लैग इस तरह चालू किए जाते हैं।

OR मानों को भी मर्ज करता है। जब दो मानों को ऐसी स्थितियों में शिफ्ट किया जाता है जो ओवरलैप नहीं करतीं, तो एक OR उन्हें एक ही रजिस्टर में जोड़ देता है। अलग-अलग लाल, हरा और नीला मान इसी तरह एक रंग में जुड़ जाते हैं।

RISC-V मैनुअल or को रजिस्टर-रजिस्टर संक्रियाओं में सूचीबद्ध करता है। यह स्रोत रजिस्टर rs1 और rs2 को पढ़ता है, बिटवाइज़ लॉजिकल OR करता है और परिणाम को गंतव्य रजिस्टर rd में लिखता है।

OR केवल बिट्स को 1 पर सेट कर सकता है। किसी बिट को साफ़ करने के लिए मास्क के साथ AND लगता है, और किसी बिट को पलटने के लिए XOR लगता है। ori वह संस्करण है जो एक रजिस्टर को एक निश्चित स्थिरांक के साथ OR करता है।

उदाहरण

li t0, 0b1100
li t1, 0b0011
or t2, t0, t1   # t2 = 0b1111