stack - Does the system allocates memory from high->low or the reverse? -


IIRC यह उच्च-> कम होना चाहिए, लेकिन इस छवि के अनुसार, यह कम-> उच्च

छवि विवरण यहां दर्ज करें

अब मैं उलझन में हूँ, जो कि मामला है?

लगता है कि कोड को कम-> hight से भी निष्पादित किया जाता है:

  0x0000000000400498 & lt; main + 0 & gt; पुश% आरबीपी 0x0000000000400499 & lt; मुख्य + 1 & gt ;: mov% rsp,% rbp 0x000000000040049c & lt; main + 4 & gt ;: उप $ 0x10,% rsp 0x00000000004004a0 & lt; main + 8 & gt ;: Movl $ 0x6, -0x4 (% rbp)    

इंटेल x86 / x64 पर, जो सबसे लोकप्रिय आर्किटेक्चर हैं जो विंडोज चलाते हैं, स्टैक निचले पते पर "बढ़ता है" I.e., स्टैक पर दबाव डालने में स्टैक पॉइंटर (ईएसपी) से घटाना होता है, और स्टैक से पॉपिंग में स्टैक पॉइंटर को जोड़ना होता है।

स्टैक आपके उदाहरण में ऊपर से नीचे तक बढ़ता है। यह फ़ंक्शन का प्रस्तावना है, और यह स्थानीय चर के लिए स्टैक स्पेस आवंटित करने के लिए उप निर्देश का उपयोग करता है। आप उस मेमोरी के साथ स्टैक को भ्रमित कर सकते हैं जिसमें आपका प्रोग्राम संग्रहित है - उस क्षेत्र में, सीपीयू क्रमशः कम से उच्च पते पर निर्देशों को कार्यान्वित करता है, जब तक कि कोई शाखा (जैसे जेएमपी) निर्देश नहीं मिलता है ।

Comments