यदि मैं इसे सही ढंग से समझता हूं, तो प्रोग्राम काउंटर को निर्देश के पते पर निष्पादित किया जाता है और अधिकांश मामलों में आप अगले निर्देश पते पर अग्रिम करने के लिए प्रोग्राम काउंटर में चार जोड़ते हैं। लेकिन कहें कि आपके पास एक प्रोग्राम काउंटर है जो स्मृति में एक शब्द (जैसे शब्द 15) को इंगित कर रहा है और आप अगले निर्देश पर अग्रिम करना चाहते हैं, क्या आप अगले निर्देश प्राप्त करने के लिए सीधे 4 को जोड़ना चाहते हैं ?? किसी भी स्पष्टीकरणकार्यक्रम काउंटर?
उत्तर
बात अनुदेश सूचक कहा जाता है कि सराहना की जाएगी। एक बार जब प्रोसेसर वर्तमान निर्देश को डीकोड करता है तो यह पता चलता है कि यह कितने बाइट्स पर कब्जा कर लेता है और जानता है कि अगले निर्देश में अग्रिम करने के लिए वर्तमान निर्देश सूचक मूल्य में कितना जोड़ना है ताकि जब वर्तमान निर्देश निष्पादित हो जाए तो प्रोसेसर जानता है कि आगे क्या करना है।
तो उदाहरण के लिए प्रोसेसर आपके सूचकांक के रूप में निर्देश सूचक 15 के साथ शुरू होता है - ऐसा लगता है कि उस पते पर क्या होता है, 5 बाइट्स पर कब्जा करने वाला निर्देश होता है, कोई समस्या नहीं - यह 5 को जोड़ती है वर्तमान मूल्य और यह 20 उत्पन्न करता है और इसलिए निर्देश सूचक अब मूल्य 20 स्टोर करता है और प्रोसेसर तब वर्तमान निर्देश निष्पादित करता है।
तुम कभी अग्रिम कार्यक्रम काउंटर सीधे - सीपीयू अपने कार्यक्रम को क्रियान्वित करते हुए आप के लिए यह करता है। प्रोग्रामर के रूप में, आप विभिन्न कूद निर्देशों (सशर्त, बिना शर्त, subroutine, कूदता है) को निष्पादित करके प्रोग्राम काउंटर में हेरफेर करते हैं। जब आप स्थिति-स्वतंत्र कोड में शाखा करते हैं तो प्रोग्राम काउंटर में ऑफ़सेट जोड़ने की आवश्यकता होती है। हालांकि, यहां तक कि इस मामले में आप प्रोग्राम काउंटर पर निर्देश का आकार नहीं जोड़ते हैं: इसके बजाय, आप उस स्थान का ऑफ़सेट प्रदान करते हैं जहां आप "शाखा से सापेक्ष पते" को निष्पादित करके कूदना चाहते हैं।
हम कैसे बूटलोडर लिख रहे हैं, जो पूर्ण पते 0x4000 पर स्थित एप्लिकेशन कोड पर कूद जाएगा? इस मामले में हम सीधे कार्यक्रम काउंटर को पूर्ण पते पर बदल देंगे। – eepty
@eepty यही दूसरा वाक्य कहता है: आप इसे एक जंप निर्देश के साथ कर रहे हैं, न कि रजिस्टर-सेटिंग निर्देश के साथ। – dasblinkenlight
- 1. जीसी.कोलेक्ट() और प्रदर्शन काउंटर
- 2. कार्यक्रम
- 3. सरल काउंटर
- 4. लूप काउंटर
- 5. प्रदर्शन काउंटर
- 6. स्वचालित काउंटर?
- 7. sharded काउंटर
- 8. उपाय हार्डवेयर काउंटर
- 9. पुराने काउंटर को हटाए बिना मौजूदा प्रदर्शन काउंटर श्रेणी में नया काउंटर कैसे जोड़ें?
- 10. अनुरोधित प्रदर्शन काउंटर एक कस्टम काउंटर नहीं है, इसे रीडऑनली
- 11. लक्ष्य-काउंटर के लिए काउंटर कैसे सेट करें
- 12. एक्सएसएल के अंदर काउंटर: प्रत्येक लूप के लिए काउंटर
- 13. मैक कार्यक्रम
- 14. एंड्रॉयड कार्यक्रम
- 15. बाहरी कार्यक्रम
- 16. मॉड्यूलर कार्यक्रम
- 17. जीसीसी कार्यक्रम
- 18. java.util.ConcurrentModificationException कार्यक्रम
- 19. कार्यक्रम जावा
- 20. एनएसएमयूटेबलएरे काउंटर हमेशा शून्य
- 21. कस्टम प्रदर्शन काउंटर
- 22. Magento में हिट काउंटर
- 23. प्रदर्शन काउंटर और थ्रेडिंग
- 24. दूषित प्रदर्शन काउंटर?
- 25. सरल jquery दूसरा काउंटर
- 26. Django टेम्पलेट काउंटर
- 27. मैं इंटेल सीपीयू काउंटर
- 28. डेटाबेस में बढ़ते काउंटर
- 29. प्रत्येक Jquery() काउंटर
- 30. पायथन के 'काउंटर`
आपका उदाहरण समझ में आता है, लेकिन जहां पीसी 4 से यदि आप जोड़ने के उस पते पर क्या पर निर्भर करता है आता है ?? – Ockham
@ user28694: यह एक प्रोसेसर पर निर्भर करेगा। कुछ प्रोसेसर में निर्देश सेट होता है जहां सभी निर्देशों की लंबाई समान होती है, इसलिए वे बिना शर्त के +4 कर सकते हैं। कुछ प्रोसेसर में परिवर्तनीय लंबाई निर्देश होंगे और वे तय करेंगे कि वे निर्देश के पहले बाइट्स का उपयोग करके किस निर्देश से निपटते हैं। – sharptooth
[एमआईपीएस निर्देश सभी 32-बिट लंबे] नहीं हैं (http://en.wikipedia.org/wiki/MIPS_architecture#MIPS_I_instruction_formats)? –