srl

srl

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

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

विवरण

srl बिट्स को दाईं ओर खिसकाता है, जो sll के विपरीत है। अक्षरों का अर्थ है शिफ्ट राइट लॉजिकल। यह रूप rs1 के बिट्स लेता है, उन्हें rs2 में दी गई संख्या तक दाईं ओर खिसकाता है, और परिणाम rd में संग्रहीत करता है।

srl rd, rs1, rs2

दाएँ सिरे से आगे धकेले गए कोई भी बिट्स खो जाते हैं, और बाईं ओर खाली हुई जगहों को 0 से भर दिया जाता है।

यह शून्य भरण ही "लॉजिकल" शब्द को स्पष्ट करता है। दायाँ शिफ्ट किसी मान को आधा कर देता है, इसलिए 1 का शिफ्ट 2 से भाग देता है और 3 का शिफ्ट 8 से भाग देता है। बचा हुआ हिस्सा त्याग दिया जाता है, जो पूर्णांक विभाजन से मेल खाता है। srl किसी अहस्ताक्षरित संख्या को दो की घात से तेज़ी से विभाजित करता है।

दो राइट शिफ्ट निर्देश मौजूद हैं, और अंतर यह है कि खाली हुए उच्च बिट्स में क्या भरा जाता है। srl वहाँ 0 डालता है। इसका समकक्ष sra उन स्थानों में साइन बिट की प्रतिलिपि करता है, जो ऋणात्मक संख्याओं का चिह्न सुरक्षित रखता है। किसी कच्चे बिट पैटर्न या ऐसे मान के लिए srl चुनें जो ऋणात्मक नहीं हो सकता। ऐसे हस्ताक्षरित मान पर जो ऋणात्मक हो सकता है, srl एक बड़ी धनात्मक संख्या देता है, और उस स्थिति में sra सही निर्देश है।

RISC-V मैनुअल के अनुसार, शिफ्ट गणना रजिस्टर rs2 के निम्न 5 बिट्स में समाहित होती है। वे 5 बिट्स 0 से 31 स्थानों तक फैले हैं, इसलिए rs2 के शेष बिट्स को अनदेखा किया जाता है। मैनुअल srl को लॉजिकल राइट शिफ्ट कहता है, जो शीर्ष पर शून्य डालता है।

जब शिफ्ट गणना एक स्थिरांक हो, तो इमीडिएट रूप srli का उपयोग करें।

उदाहरण

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