2012-05-14 12 views
7

अगर 0x1001 0000 पर कुछ संग्रहीत किया जाता है तो अगली चीज़ 0x1001 0004 पर संग्रहीत होती है। और यदि मैं सही हूं तो 32-बिट आर्किटेक्चर में मेमोरी टुकड़े प्रत्येक 32 बिट्स हैं। तो 0 बिट 1001 0002 32 बिट्स के दूसरे भाग में इंगित करेगा?एमआईपीएस में 4 से स्मृति पते क्यों बढ़े हैं?

+0

मेमोरी पते * 4 *, नहीं * 4 बिट्स * द्वारा बढ़ाए जाते हैं। – Gabe

उत्तर

8

सबसे पहले, MIPS वास्तुकला में स्मृति पतों 4. MIPS से वृद्धि नहीं कर रहे हैं को संबोधित बाइट का उपयोग करता है, तो आप स्मृति से किसी भी बाइट पता कर सकते हैं (देखें lb और lbu जैसे एक को पढ़ने के लिए एक एकल बाइट, lh और lhu पढ़ने के लिए आधा शब्द)।

तथ्य यह है कि यदि आप 32 बिट्स लंबाई (4 बाइट्स, lw) शब्द पढ़ते हैं, तो दो लगातार शब्द एक-दूसरे से 4 बाइट दूर होंगे। इस मामले में, आप अगले शब्द के पते को प्राप्त करने के लिए पहले शब्द के पते पर 4 जोड़ देंगे।

इसके अलावा, यदि आप शब्दों को पढ़ते हैं तो आपको उन्हें 4 के गुणकों में संरेखित करना होगा, अन्यथा आपको एक संरेखण अपवाद मिलेगा।

अपने उदाहरण में, यदि पहला शब्द 0x10010000 में संग्रहित है फिर अगला शब्द 0x10010004 में और निश्चित रूप से हो जाएगा पहली छमाही/दूसरी छमाही 0x1001000 और 0x1001002 (आदेश वास्तुकला का endianness पर निर्भर करेगा में होगा)।

0

आपने ऐसा उत्तर दिया है! 32 बिट्स 4 बाइट्स बनाते हैं, इसलिए यदि आप उदा। एक ढेर को दबाकर, जहां सभी तत्वों को एक ही आकार के रूप में धकेल दिया जाता है, प्रत्येक अगला आइटम अगली बार (या इससे पहले) 4 बाइट्स होगा।

संबंधित मुद्दे