मैं एमआईपीएस 32 बिट सीख रहा हूं। मैं पूछना चाहता था कि स्टोर वर्ड के मामले में एएलयू को भेजने से पहले हम 16 बिट ऑफसेट (सिंगल साइकिल डेटापाथ में) को क्यों बढ़ाते हैं?हम लोड शब्द निर्देश में विस्तार क्यों करते हैं?
उत्तर
16-बिट ऑफसेट की तरह लगता है एक हस्ताक्षर 2's complement नंबर है, यानी यह सकारात्मक या नकारात्मक हो सकता है।
इसे 32 बिट्स में परिवर्तित करते समय, साइन जानकारी रखने के लिए सबसे महत्वपूर्ण बिट को ऊपरी 16 बिट्स में कॉपी करने की आवश्यकता होती है।
मुझे यकीन नहीं है कि यह आपके लिए सहायक है, लेकिन मैं इसे वैसे भी पोस्ट कर रहा हूं।
हमें एक बहुत ही सामान्य अर्थ में विचार करें, सी ++ यानी ए [0], ए [1], ए [2] ..... में निर्देशों की एक सरणी किसी भी दो निर्देशों के बीच "मूर्तिकला" दूरी 1 यूनिट है
इस एमआईपीएस को इस समानता को लेते हैं। एमआईपीएस में, मूर्तिकलात्मक रूप से प्रत्येक निर्देश "1 यूनिट" से अलग होता है, हालांकि, एमआईपीएस में 1 यूनिट = 4 बाइट्स। प्रत्येक निर्देश 4 बाइट लंबा होता है और यही कारण है कि निर्देश से निर्देश में जाने पर पीसी को 4 यानी पीसी + 4 से बढ़ाया जाता है। इस प्रकार निर्देश I और निर्देश I + 2 के बीच का अंतर "रूपक रूप से" 2 है लेकिन वास्तव में 2 * 4 = 8 यानी पीसी + 4 + 4
शाखा निर्देशों में निर्दिष्ट ऑफसेट पर वापस आ रहा है, ऑफ़सेट का प्रतिनिधित्व करता है अगले अनुदेश (शाखा के बाद निर्देश) से "मूर्तिकला" दूरी। तो "वास्तविक" दूरी प्राप्त करने के लिए, ऑफसेट को 4 से गुणा किया जाना है। यही कारण है कि हमें ऑफसेट को "बाएं 'पर 2 बिट्स द्वारा" साइन-विस्तार "करने का निर्देश दिया गया है, क्योंकि, किसी भी बाइनरी मान को स्थानांतरित करना छोड़ दिया गया है एन बिट्स उस मान को 2^एन द्वारा गुणा करने में परिणाम देता है। हमारे मामले में 2^2 = 4
तो शाखा निर्देश का वास्तविक लक्ष्य पता पीसी + 4 + 4 * ऑफसेट है।
उम्मीद है कि इससे मदद मिलती है।
मेरे ज्ञान का सबसे अच्छा, लोड या स्टोर निर्देशों में ऑफ़सेट मान अस्थायी रजिस्टर में अस्थायी रजिस्टर में मूल्य में जोड़ा जाता है। रजिस्टर 32 बिट है और 16 बिट और 32 बिट के अतिरिक्त ऑपरेशन संभव नहीं है, मान संकेत बढ़ाया गया है।
मुझे लगता है कि आप यहां अपनी अवधारणाओं को थोड़ा गलत कर रहे हैं।
5 बिट्स जो आपको लगता है कि एएलयू के अंदर जा रहे हैं, वास्तव में 32 [2^5] रजिस्टरों में से एक का चयन करने के लिए रजिस्टर मेमोरी के अंदर जाते हैं।
प्रत्येक रजिस्टर स्वयं 32 बिट्स का है। इसलिए, ऑफसेट को रजिस्टर मूल्य में जोड़ने के लिए, आपको इसे 32 बिट्स तक विस्तारित करने की आवश्यकता है।
एएलयू ऑपरेशन हमेशा एमआईपीएस के लिए एकल चक्र डेटापथ में एक ही आकार के दो रजिस्टरों के बीच होता है।
32-बिट मशीन के हार्डवेयर में अधिकांश एएलयू 32-बिट इनपुट लेते हैं, और सभी रजिस्ट्रार 32-बिट रजिस्ट्रार होते हैं।
अपने डेटा के साथ काम करने के लिए यह 32-बिट चौड़ा होना चाहिए, इसलिए हम साइन-विस्तार क्यों करते हैं, हालांकि एक और दृष्टिकोण शून्य-विस्तार के लिए होगा, लेकिन साइन-विस्तार का उपयोग तब किया जाता है जब आप तत्काल और ऑफसेट को सुरक्षित रखने के लिए काम कर रहे हों 2 के पूरक में साइन इन करें।
साइन एक्सटेंशन होता है उदा। केवल पता रजिस्टरों को लोड करने के मामले में M68xxx मशीनों के मामले में। डेटा रजिस्टरों के मामले में ऐसा नहीं है।
उदा।डेटा के मामले में
movea.w addr,a0
move addr,d0
addr:
dc.w $FFFF
सुराग $ 0000FFFF रजिस्टर लोड हो रहा है, पते रजिस्टर लोड हो रहा है $ FFFFFFFF लेकिन के मामले में।
यह समझने के लिए, पर हस्ताक्षर किए नकारात्मक प्रस्तुति, $ FFFF के दो पूरक का निर्माण, 32 बिट के लिए संख्या का विस्तार करने और दो पूरक फिर से करना, 32 बिट में इसी प्रतिनिधित्व पाने के।
चीयर्स और तरह का संबंध, स्टीफ़न एस
- 1. हम रिफैक्टर क्यों करते हैं?
- 2. हम आवश्यकताजे मॉड्यूल में एंजुलरजेस निर्देश कैसे परिभाषित करते हैं?
- 3. हम serialization का उपयोग क्यों करते हैं?
- 4. हम जावा परियोजना में rt.jar का उपयोग क्यों करते हैं?
- 5. हम एंड्रॉइड एक्सएमएल फ़ाइल में नेमस्पेस क्यों निर्दिष्ट करते हैं?
- 6. हम क्यों पसंद करते हैं? सेवा मेरे ?? सी # में ऑपरेटर?
- 7. हम प्रोग्रामिंग में रेडियंस का उपयोग क्यों करते हैं?
- 8. बिटमैप्स लोड "ऊपर" क्यों करते हैं?
- 9. बैकस्लाश एलियास विस्तार को क्यों रोकते हैं?
- 10. प्रीप्रोसेसर मैक्रो विस्तार एक अन्य प्रीप्रोसेसर निर्देश
- 11. सादा और सरल, हम _stdcall का उपयोग क्यों करते हैं?
- 12. हम सदस्य रहित इंटरफ़ेस का उपयोग क्यों करते हैं?
- 13. हम एसएसएल प्रमाणपत्रों पर भरोसा क्यों करते हैं?
- 14. हम इंटरफेस को दोबारा क्यों लागू करते हैं?
- 15. हम लॉगर्स स्थिर फाइनल क्यों घोषित करते हैं?
- 16. हम canvas.save या canvas.restore क्यों प्रयोग करते हैं?
- 17. हम डेटा प्रकारों की परवाह क्यों करते हैं?
- 18. हम हाइबरनेट एनोटेशन का उपयोग क्यों करते हैं?
- 19. हम आखिरकार ब्लॉक का उपयोग क्यों करते हैं?
- 20. क्या हम jQuery घोषित करते हैं या हम इसका उपयोग करते हैं?
- 21. मेरे जीसीसी आउटपुट में अतिरिक्त निर्देश क्यों हैं?
- 22. क्रिसमस के बारह दिनों में कितने कुल उपहार हैं यदि हम किसी भी संख्या में 12 का विस्तार करते हैं?
- 23. MIPS लोड शब्द वाक्य रचना
- 24. क्या हम ऑब्जेक्ट से प्राप्त करते हैं?
- 25. जहां हम JSON का उपयोग करते हैं?
- 26. हम एमवीवीएम का उपयोग कब करते हैं?
- 27. लेस निर्देश उद्देश्य?
- 28. "प्रोग्राम फ़ाइलें" दो शब्द क्यों हैं?
- 29. हम इंटरफेस क्यों कार्यान्वित कर रहे हैं?
- 30. क्या हम एएसपी.NET में एकाधिक उपयोगकर्ताओं को प्रभावित करते हैं जब हम थ्रेड वर्तमान संस्कृति/CurentUICulture सेट करते हैं?
मैं मतलब, हम उसे क्यों 32 बिट में बदलने की जरूरत है? एएलयू में जाने वाला दूसरा रजिस्टर (बेस रजिस्टर) 32 बिट्स नहीं बल्कि केवल 5 बिट्स है। 32 बिट्स होने की आवश्यकता क्यों है? –
बेस रजिस्टर की सामग्री 32 बिट्स है, और यही वास्तव में एएलयू में जाती है। – jpa