एएसएम के शुरुआती के रूप में, मैं सीखने के लिए जीसीसी-एस जेनरेट एएसएम कोड की जांच कर रहा हूं।एक विधि कॉल करते समय linux पर स्टैक के लिए gcc 4.x डिफ़ॉल्ट आरक्षित 8 बाइट क्यों?
एक विधि कॉल करते समय स्टैक के लिए जीसीसी 4.x डिफ़ॉल्ट आरक्षित 8 बाइट क्यों?
func18 कोई रिक्त कार्य नहीं है जिसमें कोई वापसी नहीं है कोई स्थानीय var परिभाषित नहीं है। मुझे पता नहीं लगाया जा सकता है कि क्यों 8 बाइट आरक्षित हैं (न ही किसी फोरम/साइट के कारण के लिए उल्लेख है, पीपीएल इसे मानने के लिए लगता है) क्या यह% ebp सिर्फ धक्का है? या वापसी प्रकार ?! कई thx!
.globl _func18
_func18:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
.text
वास्तव में, इनमें से कोई भी निर्देश समझ में नहीं आता है ... किसी भी स्थानीय चर के बिना एक फ़ंक्शन को फ्रेम सूचक – Martin
सेट करने की आवश्यकता नहीं है, यह शायद अनुकूलन स्तर पर निर्भर करता है। क्या आप फ़ंक्शन के लिए पूर्ण जेनरेट कोड शामिल कर सकते हैं? –
वापसी का पता और ढेर फ्रेम सूचक के लिए यह जगह नहीं है? – jdizzle