2012-12-27 8 views
9

उदाहरण के लिए यदि मैंने कुल्हाड़ी को धक्का दिया [एसपी] अक्ष के मेरे मूल्य या कुल्हाड़ी के बाद शब्द को इंगित करता है? यह वास्तविक मोड से सुरक्षित मोड में भी अलग है? मैं यह पूछता हूं क्योंकि आर्ट ऑफ़ असेंबली बुक स्पॉट पॉइंट्स को डेटा धक्का देने के लिए स्पष्टीकरण देता है और बताता है, और इस पृष्ठ पर OSDev Wiki - Stack यह सचित्र है क्योंकि यह अंतिम धक्का डेटा के बाद खाली शब्द को इंगित करता है।x86 जहां स्टैक पॉइंटर पॉइंट?

+1

इंटेल संदर्भ मैनुअल में प्रत्येक निर्देश के लिए छद्म कोड शामिल है। अपने प्रश्न का उत्तर देने के लिए, यह ढेर पर सबसे ऊपर मूल्य को इंगित करता है। – DCoder

उत्तर

17

विकिपीडिया here का कहना है:

ढेर एक परोक्ष decrementing (धक्का) और incrementing (पॉप) ढेर सूचक के साथ किया जाता है। 16-बिट मोड में, यह निहित स्टैक पॉइंटर को एसएस के रूप में संबोधित किया जाता है: [एसपी], 32-बिट मोड में यह एसएस: [ईएसपी] है, और 64-बिट मोड में यह [आरएसपी] है। ढेर सूचक वास्तव में पिछले मूल्य कि जमा हो गया था, इस धारणा के तहत है कि इसके आकार से मेल खाएगी के प्रोसेसर (यानी, 16, 32, या 64 बिट्स) के ऑपरेटिंग मोड की डिफ़ॉल्ट चौड़ाई मैच के लिए अंक पुश/पॉप/कॉल/रेट निर्देश।

इस तरह मेरी माई-बैक मेमोरी कहती है कि यह भी काम करता है।

sub esp, 4 
mov [esp], eax 

तो एक धक्का के बाद, esp धक्का दिया मूल्य का पता आयोजन करेगा: करने के लिए

+0

ठीक है धन्यवाद, लेकिन क्या आपको कोई विचार है कि ओएसडीवी विकी स्टैक के अंत के बाद एएसपी को क्यों दिखाती है। क्या यह एक गलती है? – user1180619

+0

आप इसे आजमा सकते हैं। ढेर पर कुछ अजीब पुश करें और फिर देखें कि [esp] एक ही मूल्य है या नहीं। यह सुनिश्चित करने के लिए कि यह दुर्घटना नहीं है, कई मानों के साथ इसे आज़माएं। –

+0

@ user1180619: ढेर ऊपर उल्टा काम करते हैं।वे उच्च पते पर शुरू होते हैं, और वहां से काम करते हैं। पता नहीं क्यों, लेकिन ऐसा ही है। – Linuxios

10
push eax 

बराबर है।

0

मुझे लगता है कि मैं समझता हूं कि ओपी इस सवाल क्यों पूछ रहा है। एसपी से पहले चर 8 बाइट क्यों नहीं है और 4 नहीं?

के बाद कुछ शोध मैं this पाया जो इंगित करता है कि:

सपा + 0 वर्ष ईबीपी सपा 4 वर्ष EIP (अनुदेश सूचक)

इसलिए है, स्वाभाविक रूप से, पहले पैरामीटर में है सपा + 8।

-1

x86_64 में ढेर बिंदु रजिस्टर% आरएसपी जो कम 32 बिट भाग में% के रूप में अच्छी तरह से knowned में है esp

0

के अनुसार ली Meador की और कोरी नेल्सन जवाब, अंतिम मान पर ढेर सूचक अंक कि धक्का दिया गया था।

इंटेल 64 और IA-32 आर्किटेक्चर सॉफ्टवेयर डेवलपर की मैनुअल खंड 2 से (2 ए, 2 बी & 2C):

: निर्देश सेट संदर्भ, AZ, PUSH शिक्षा का वर्णन से पहली पंक्ति के रूप पालन पढ़ता

स्टैक पॉइंटर को कम करता है और फिर स्टैक के शीर्ष पर पर स्रोत ऑपरेंड स्टोर करता है।

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