and
lyszt.net and और अन्य RISC-V निर्देशों को अधिक विस्तार से कवर करता है।
एन्कोडिंग प्रारूप
विवरण
and एक बिटवाइज़ निर्देश है। एक रजिस्टर 32 बिट रखता है, जो एक पंक्ति में 32 अलग-अलग 0 और 1 होते हैं। एक बिटवाइज़ निर्देश अपने ऑपरेशन को सभी 32 स्थानों पर स्वतंत्र रूप से लागू करता है, और स्थानों के बीच कोई कैरी नहीं जाता।
एक अकेले बिट पर, AND केवल तब 1 देता है जब दोनों इनपुट बिट 1 हों, अन्यथा 0 देता है। नीचे दिया गया रूप उस नियम को सभी 32 स्थानों पर लागू करता है, rs1 और rs2 की तुलना करता है और परिणाम को rd में लिखता है।
and rd, rs1, rs2
AND का उपयोग मास्किंग के लिए किया जाता है, जो कुछ बिट रखता है और अन्य को साफ़ करता है। जहाँ मास्क में 1 होता है, वहाँ मूल बिट बना रहता है। जहाँ मास्क में 0 होता है, वहाँ परिणाम 0 होता है। किसी मान का मास्क 00001111 के साथ AND करने पर निचले चार बिट बने रहते हैं और बाकी साफ़ हो जाते हैं। मास्किंग किसी ऐसे मान से एक फ़ील्ड निकालती है जिसमें कई फ़ील्ड एक साथ पैक होते हैं।
RISC-V मैनुअल and, or और xor को रजिस्टर-रजिस्टर ऑपरेशनों में सूचीबद्ध करता है। ये सभी स्रोत रजिस्टर rs1 और rs2 को पढ़ते हैं, परिणाम को गंतव्य रजिस्टर rd में लिखते हैं, और बिटवाइज़ लॉजिकल ऑपरेशन करते हैं।
उदाहरण में, 0b1100 (0b उपसर्ग बाइनरी अंकों को दर्शाता है) का AND 0b1010 के साथ किया जाता है। दोनों इनपुट में केवल सबसे बाएँ स्थान पर 1 है, इसलिए परिणाम 0b1000 है, और यह t2 में जाता है।
उदाहरण
li t0, 0b1100 li t1, 0b1010 and t2, t0, t1 # t2 = 0b1000
