srli

srli

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

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

विवरण

srli बिट्स को एक निश्चित मात्रा में दाईं ओर खिसकाता है और खाली हुई शीर्ष स्थितियों में 0s डालता है। यह srl का स्थिर-मात्रा रूप है, जो यांत्रिकी और शून्य भरण को कवर करता है। i का अर्थ immediate है, एक स्थिरांक जो निर्देश में एन्कोड किया गया है।

srli का रूप नीचे दिखाई देता है, जहाँ amount 0 से 31 तक की एक निश्चित संख्या है।

srli rd, rs1, amount

एक दायाँ शिफ्ट किसी संख्या को हर स्थान के लिए एक बार आधा कर देता है, और शून्य भरण मान को कभी ऋणात्मक नहीं मानता, इसलिए srli एक अहस्ताक्षरित संख्या को दो की घात से बिना शेषफल के विभाजित करता है। अगली पंक्ति t0 को चार से विभाजित करती है।

srli t0, t0, 2

मास्किंग AND के साथ मिलाकर, srli एक पैक्ड मान से एक फ़ील्ड निकालता है। फ़ील्ड को नीचे तक शिफ्ट करें, फिर केवल उसके बिट्स रखने के लिए andi लागू करें। एक शब्द के दूसरे बाइट को पढ़ने के लिए 8 से दायाँ शिफ्ट और 0xff के साथ AND की आवश्यकता होती है।

RISC-V मैनुअल स्थिर शिफ्ट को I-type प्रारूप के एक विशेषीकरण के रूप में एन्कोड करता है, जो मानक निर्देश लेआउट में से एक है। शिफ्ट मात्रा immediate फ़ील्ड के निचले 5 बिट्स पर कब्जा करती है, और निर्देश का बिट 30 दो दाएँ शिफ्ट को अलग करता है। srli एक तार्किक दायाँ शिफ्ट करता है, और ऊपरी बिट्स में 0s प्रवेश करते हैं।

srli हमेशा 0s से भरता है। यह कच्चे बिट पैटर्न और उन संख्याओं के लिए उपयुक्त है जो कभी ऋणात्मक नहीं होतीं। एक हस्ताक्षरित मान पर जो ऋणात्मक हो सकता है, 0s साइन मार्कर को अधिलेखित कर देते हैं। दो की घात से हस्ताक्षरित विभाजन srai का उपयोग करता है। दोनों के बीच का चुनाव दर्शाता है कि आप रजिस्टर के बिट्स को कैसे पढ़ते हैं।

उदाहरण

li t0, -8
srli t1, t0, 1   # t1 = 2147483644 (zero-filled)