lui

lui

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

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

विवरण

lui बड़े स्थिरांकों को अस्सेम्बल करता है। एक RISC-V निर्देश 32 बिट्स लेता है, और वे बिट्स ऑपरेशन, उसके रजिस्टर, और किसी भी स्थिरांक को वहन करते हैं। एक सामान्य निर्देश लगभग 12 बिट्स का स्थिरांक रख सकता है, जो छोटी संख्याओं को कवर करता है लेकिन पूर्ण 32-बिट मान से कम पड़ता है। कई निर्देश एक बड़े स्थिरांक के टुकड़े प्रदान करते हैं।

lui (load upper immediate) शीर्ष टुकड़ा प्रदान करता है। यह 20-बिट का स्थिरांक लेता है और इसे गंतव्य रजिस्टर के ऊपरी 20 बिट्स में लिखता है, निचले 12 बिट्स को शून्य पर छोड़ देता है। रूप नीचे दिखाई देता है।

lui rd, value

एक पूर्ण स्थिरांक के लिए दो निर्देश चाहिए। lui उच्च 20 बिट्स सेट करता है, और addi निचले 12 जोड़ता है। li छद्म-निर्देश यह कार्य आपके लिए करता है, इसलिए सामान्य संख्याओं के लिए हस्त-लिखित lui की शायद ही आवश्यकता होती है।

RISC-V मैनुअल कहता है कि lui और auipc का असेंबली सिंटैक्स स्थिरांक के निचले 12 बिट्स को छोड़ देता है, क्योंकि वे बिट्स हमेशा शून्य होते हैं। यह यह भी कहता है कि lui के बाद jalr किसी भी 32-बिट निरपेक्ष पते तक पहुँच सकता है: lui लक्ष्य पते के ऊपरी 20 बिट्स लोड करता है और jalr निचले बिट्स जोड़ता है।

lui सीधे तब प्रकट होता है जब गोल पते लोड किए जाते हैं जिनके निचले बिट्स शून्य होते हैं, जैसे हार्डवेयर उपकरणों के निश्चित पते, जहाँ एक अकेला lui पूरा मान प्रदान करता है। इसका निकट संबंधी auipc है, जो वर्तमान स्थान के सापेक्ष एक पता बनाता है।

उदाहरण

lui t0, 0x10     # t0 = 0x10000 (0x10 << 12)