मैं स्मृति एक्सेसिंग के बारे में पूछना चाहता हूं। जब मैं load word
कमांड निष्पादित करता हूं, तो कौन से मेमोरी प्रतिबंध मौजूद हैं? मतलब ऑफसेट या बेस रजिस्टर के रूप में मैं सबसे बड़ी संख्या का उपयोग कर सकता हूं?एमआईपीएस स्मृति प्रतिबंध?
रजिस्टर्स 32 बिट्स हैं और जहां तक मुझे पता है कि "तत्काल" 16 बिट्स है। इस प्रकार, मैं बहुत मैं
array: .word 0:20000
~
la $s0, array
lw $s1, 15000($s0)
...
की तरह कुछ नहीं कर सकते तो अगर मैं 15000 उपयोग करना चाहते हैं, मैं la
कुछ करने के लिए छोटे की जरूरत है और वहाँ सही से पर जा सकते हैं यकीन है? लेकिन ठीक होने के लिए मुझे किस छोटे मूल्य की आवश्यकता है और क्यों?
तो अगर मैं एक ऑफसेट से बड़े 32767 के साथ एक मूल्य एक्सेस करना चाहते तो मैं की आवश्यकता होगी चाहते हैं 32767 पर 'ला' करने के लिए और एक और ऑफसेट का उपयोग करें? क्योंकि मेरे उदाहरण में मैं उपयुक्त मान (सरणी का पहला शब्द) का उपयोग करता हूं, लेकिन अगर मैं कहता हूं कि मुझे किसी अन्य 'ला' का उपयोग करना है या कोई और तरीका है? – Elias
यदि आप ऑफसेट वाले किसी मान को एक्सेस करना चाहते हैं जो तत्काल ऑफ़सेट फ़ील्ड में फिट नहीं होगा, तो आपको उस ऑफसेट को एक रजिस्टर में प्राप्त करना होगा और इसे स्वयं पते में जोड़ना होगा। 'ला' आपको एक रजिस्टर में मनमाने ढंग से तत्काल मूल्य प्राप्त करने का सबसे इष्टतम तरीका देगा। यदि आप इसे अलगाव में एक बार कर रहे हैं, तो बस अपने इच्छित ऑफसेट के लिए 'la' का उपयोग करें, और 'lw' ऑफसेट फ़ील्ड में' 0'। यदि आप आस-पास की कई चीजों तक पहुंच रहे हैं, तो 'ला' और एक बार अतिरिक्त प्रदर्शन करें, फिर एक्सेस के लिए उचित तत्काल ऑफसेट का उपयोग करें। – moonshadow