xori

xori

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

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

विवरण

xori एक स्थिरांक के साथ बिटवाइज़ XOR करता है। andi और ori के साथ, यह इमीडिएट लॉजिक निर्देशों को पूरा करता है। i का अर्थ है इमीडिएट: निर्देश में एन्कोड किया गया एक निश्चित मान, इसलिए दूसरे रजिस्टर की आवश्यकता नहीं होती। XOR किसी बिट स्थिति पर 1 देता है जब दोनों बिट भिन्न हों (xor पृष्ठ देखें)। एक स्थिरांक मास्क दिए जाने पर, मास्क में 1 संबंधित बिट को पलट देता है और 0 उस बिट को अपरिवर्तित छोड़ देता है।

xori का सिंटैक्स नीचे दिखाया गया है। यह rs1 में मौजूद मान का स्थिरांक imm के साथ XOR करता है और परिणाम को rd में लिखता है।

xori rd, rs1, imm

andi चयनित बिट्स को साफ़ करता है, ori उन्हें सेट करता है, और xori उन्हें उलट देता है। दो बार उलटने पर मूल मान वापस आ जाता है।

xori not निर्देश भी प्रदान करता है। किसी मान के सभी बिट्स को पलटने का अर्थ है सभी 1s के मास्क के साथ XOR, और not नीचे दी गई पंक्ति का शॉर्टहैंड है, क्योंकि बिट्स में -1 सभी 1s होता है। RISC-V में हर बिट को उलटने वाला कोई समर्पित निर्देश नहीं है।

xori rd, rs, -1

RISC-V मैनुअल कहता है कि ऑपरेशन से पहले 12-बिट इमीडिएट को 32 बिट्स तक साइन-एक्सटेंड किया जाता है, इसलिए स्थिरांक -1 सभी 1s का मास्क बन जाता है। यह xori को स्थिरांक -1 के साथ एक रजिस्टर के बिटवाइज़ लॉजिकल इनवर्ज़न के रूप में सूचीबद्ध करता है, जो not स्यूडो-इंस्ट्रक्शन है।

एक सामान्य छोटा उपयोग 0 या 1 के रूप में रखे गए हाँ या ना मान को टॉगल करना है। अगली पंक्ति जब भी चलती है, इसे दूसरी स्थिति में बदल देती है।

xori t0, t0, 1

स्थिरांक 12 बिट्स तक सीमित है। व्यापक पैटर्न के लिए, मास्क को एक रजिस्टर में लोड करें और xor का उपयोग करें।

उदाहरण

li t0, 0
xori t1, t0, -1   # t1 = -1 (every bit flipped)