li
छद्मlyszt.net li और अन्य RISC-V निर्देशों को अधिक विस्तार से कवर करता है।
विवरण
li एक स्थिर संख्या को रजिस्टर में लोड करता है। यह नाम load immediate का संक्षिप्त रूप है, और immediate एक निश्चित मान होता है जो सीधे कोड में लिखा जाता है। अगली पंक्ति t0 में 42 संग्रहीत करती है।
li t0, 42
अधिकांश प्रोग्राम ज्ञात संख्याओं को रजिस्टरों में रखकर शुरू होते हैं, जिनमें काउंटर, सीमाएँ और सेवा कोड शामिल हैं।
load शब्द हार्डवेयर की एक सीमा से आया है। एक RISC-V निर्देश 32 बिट लंबा होता है और उसे ऑपरेशन, रजिस्टर और स्थिरांक एक साथ ले जाने होते हैं। एक निर्देश पूरा 32-बिट स्थिरांक नहीं रख सकता। छोटे स्थिरांक फिट हो जाते हैं और बड़े नहीं होते।
li उस सीमा को दूर करता है। यह एक pseudo-instruction है, एक नाम जिसे assembler उन वास्तविक निर्देशों से बदल देता है जो मान की आवश्यकता होती है। एक छोटे मान के लिए एक निर्देश चाहिए। एक बड़े मान के लिए दो चाहिए, एक जो ऊपरी भाग सेट करता है और एक जो निचला भाग जोड़ता है, इसलिए अगली पंक्ति किसी भी आकार की संख्या के लिए काम करती है।
li t1, 0x10010000
सिम्युलेटर वे वास्तविक निर्देश दिखाता है जिनमें li विस्तृत होता है।
RISC-V मैनुअल lui को 32-बिट स्थिरांक बनाने के निर्देश के रूप में वर्णित करता है। यह गंतव्य रजिस्टर के ऊपरी बिट्स में 20-बिट मान रखता है और सबसे निचले 12 बिट्स को शून्य से भर देता है।
li और la अलग-अलग चीज़ें लोड करते हैं। li वह संख्या लोड करता है जो आपने टाइप की और la वह पता लोड करता है जिसका प्रतिनिधित्व एक लेबल करता है। उदाहरण एक छोटा मान और एक बड़ा मान लोड करता है, और assembler दोनों को एक ही तरह संभालता है।
विस्तृत होता है
addi rd, zero, imm # small constants lui rd, hi + addi rd, rd, lo # large constants
असेंबलर इस छद्म-निर्देश को ऊपर सूचीबद्ध वास्तविक निर्देश या निर्देशों से बदल देता है।
उदाहरण
li t0, 42 li t1, 0x10010000
