मैं स्मृति और ढेर कैसे काम करता है यह समझने के लिए gcc -S
के साथ खेल रहा हूं। इन नाटकों के दौरान मुझे कई चीजें अस्पष्ट मिलीं। क्या आप कारणों को समझने में मेरी मदद कर सकते हैं?असेंबलर कोड बनाते समय जीसीसी ऐसा क्यों करता है?
जब फ़ंक्शन को कॉल एक कहा जाता है एक यह
mov
के बजायpush
esp
का उपयोग करता है के लिए बहस करता है।push
का उपयोग न करने का क्या फायदा है?फ़ंक्शन जो अपने स्टैक स्थित तर्कों के साथ काम करता है, उन्हें
ebp + (N + offset)
(जहां एन रिटर्न पते के लिए आरक्षित आकार है) के रूप में इंगित करता है। मुझेesp - offset
देखने की उम्मीद है जो अधिक समझ में आता है।ebp
का उपयोग हर जगह मौलिक बिंदु के रूप में करने का कारण क्या है? मुझे पता है कि ये बराबर हैं लेकिन वैसे भी?main
की शुरुआत में यह जादू क्या है? क्योंesp
इस तरह से शुरू किया जाना चाहिए?and esp,0xfffffff0
धन्यवाद,
यह 3 अलग-अलग प्रश्न हो सकते हैं। वैसे भी, तीसरे बिंदु का जवाब स्टैक संरेखण है। – Mysticial