2012-12-24 95 views
10

मैं इसके साथ उलझन में हूं क्योंकि अगर हमारे पास पहले से ही एक पॉइंटर है तो हम आसानी से अगले निर्देश को इंगित कर सकते हैं, हम आसानी से पिछले फ़ंक्शन को वापस पाने के लिए इंगित कर सकते हैं, तो हमें पिछले फ़ंक्शन या मॉड्यूल पर वापस जाने के लिए एक और स्टैक पॉइंटर रजिस्टर की आवश्यकता क्यों है ?हमारे पास पहले से ही प्रोग्राम काउंटर रजिस्टर होने पर स्टैकपोइंटर रजिस्टर की आवश्यकता क्यों है?

+1

संभव डुप्लिकेट [माइक्रोप्रोसेसरों में उपयोग किए जाने वाले स्टैक पॉइंटर क्या है?] (http://stackoverflow.com/questions/1464035/what-is-a-stack-pointer-used-for- इन-माइक्रोप्रोसेसरों) –

उत्तर

13

प्रोग्राम काउंटर सीपीयू को बताता है जहां यह है। ढेर का उपयोग अन्य चीजों के साथ किया जाता है जहां है।

यदि कोई फ़ंक्शन कहा जाता है, तो उस फ़ंक्शन को यह जानने की आवश्यकता है कि इसे समाप्त होने के बाद कहां लौटना है। यह वास्तव में बस एक पता हो सकता है, लेकिन यदि वह कार्य स्वयं अन्य कार्यों को कॉल करता है, या यहां तक ​​कि खुद को बार-बार कॉल करता है, तो उसे यह सुनिश्चित करने की आवश्यकता है कि यह पता गुम या ओवरराइट नहीं हुआ है - इसलिए इसे संग्रहीत किया जाना चाहिए। ऐसा करने का प्राकृतिक तरीका, पते को ढेर पर धक्का देना है, और आवश्यकता होने पर पॉप को फिर से बंद करना है।

बेशक यह स्थानीय राज्य को एक फ़ंक्शन के लिए भी संग्रहीत करता है, क्योंकि कार्यक्रम को तब तक धक्का और पॉप किया जाना चाहिए क्योंकि कार्यक्रम में उतरता है या कार्यों से लौटाता है।

सभी प्रोसेसर के पास एक ढेर नहीं है, लेकिन यदि आप किसी पर दूरस्थ रूप से जटिल कुछ भी करते हैं, तो आप अनिवार्य रूप से एक को कार्यान्वित करते हैं।

0

प्रोग्राम कन्टर अगले निर्देश की स्थिति रखता है, एक पॉइल (स्टैक) पर पॉइंटर पॉइंट स्टैक करें जहां प्रोसेसर बाद के उपयोग के लिए जानकारी संग्रहीत करता है, उदाहरण के लिए आंतरिक रजिस्ट्रार के मान subroutine पर कूदने से पहले।

0

सपा इसे वापस ठीक करने के लिए

जबकि पीसी ढेर रजिस्टर जहां यह बिजली की विफलता से पहले किसी भी आपरेशन या सामग्री के द्वि-उत्पादों की तरह अस्थायी डेटा संग्रहीत करता है से डेटा पुनः प्राप्त करने के रूप में यू पता अगले के पते पकड़ प्रयोग किया जाता है निष्पादित करने के लिए निर्देश ..