xor

xor

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

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

विवरण

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

xor rd, rs1, rs2

दो गुण XOR को उपयोगी बनाते हैं। किसी मान का स्वयं के साथ XOR करने पर 0 प्राप्त होता है, क्योंकि प्रत्येक बिट स्वयं से मेल खाता है, इसलिए अगली पंक्ति एक रजिस्टर को शून्य पर सेट करती है।

xor t0, t0, t0

किसी मास्क के साथ XOR उन बिट्स को पलट देता है जहाँ मास्क में 1 होता है और अन्य को अपरिवर्तित छोड़ देता है। दो बार पलटने से मूल मान बहाल हो जाता है। सरल एन्क्रिप्शन और त्रुटि जाँच इस पर निर्भर करते हैं।

XOR समानता की भी जाँच करता है। नीचे दी गई पंक्ति के बाद, t2 शून्य होता है जब दोनों इनपुट समान थे और अशून्य होता है जब वे भिन्न हैं, और एक ब्रांच परिणाम की जाँच कर सकती है।

xor t2, t0, t1

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

उदाहरण t0 को 0 पर साफ़ करता है, चाहे उसमें पहले कुछ भी हो। स्थिरांक शून्य के साथ li निर्देश (load immediate) भी वही करता है।

उदाहरण

xor t0, t0, t0   # t0 = 0