la
छद्मlyszt.net la और अन्य RISC-V निर्देशों को अधिक विस्तार से कवर करता है।
विवरण
la किसी चीज़ का पता एक रजिस्टर में लोड करता है। वह पता एक मेमोरी स्थान होता है, और उस स्थान पर संग्रहीत मान एक अलग चीज़ है। यह नाम load address का संक्षिप्त रूप है।
जब आप मेमोरी में डेटा आरक्षित करते हैं, तो आप उसे arr या msg जैसा नाम देते हैं, जो आपको कच्चे पते के नंबरों को ट्रैक करने से बचाता है। वह नाम एक लेबल है, जो मेमोरी पते का एक पठनीय विकल्प है। अगली पंक्ति लेबल arr द्वारा चिह्नित पते को t0 में लोड करती है। यह वह स्थान प्रदान करती है जहाँ से ऐरे शुरू होता है और ऐरे की सामग्री को नहीं पढ़ती।
la t0, arr
लोड और स्टोर निर्देश (lw, sw और बाकी) एक रजिस्टर में रखे पते को लेते हैं। नामित डेटा को पढ़ने या लिखने से पहले, उसका पता एक रजिस्टर में होना चाहिए, और la उसे वहाँ रखता है। मान पढ़ने में दो निर्देश लगते हैं। la पता लगाता है कि डेटा कहाँ है, और lw पढ़ता है कि वहाँ क्या है।
RISC-V मैनुअल auipc को pc-relative पते बनाने के निर्देश के रूप में वर्णित करता है। यह बताता है कि एक auipc के बाद 12-बिट ऑफ़सेट वाला लोड या स्टोर किसी भी 32-बिट pc-relative डेटा पते तक पहुँच सकता है।
एक पता और उसकी सामग्री उसी तरह भिन्न होते हैं जैसे एक पॉइंटर और एक मान भिन्न होते हैं। पते के रजिस्टर में आने के बाद, आप उसमें ऑफ़सेट जोड़कर अलग-अलग एलिमेंट तक पहुँचते हैं। उदाहरण टेक्स्ट के एक टुकड़े का पता a0 में लोड करता है, जो print-string सेवा की आवश्यकता है। उसे बताया जाना चाहिए कि टेक्स्ट कहाँ है, और वह वहीं से टेक्स्ट पढ़ती है। la एक pseudo-instruction है जिसे assembler कुछ वास्तविक निर्देशों से बनाता है।
विस्तृत होता है
auipc rd, hi(label) addi rd, rd, lo(label)
असेंबलर इस छद्म-निर्देश को ऊपर सूचीबद्ध वास्तविक निर्देश या निर्देशों से बदल देता है।
उदाहरण
.data msg: .string "hi" .text la a0, msg # a0 = address of msg
