से: http://en.wikipedia.org/wiki/X86_calling_conventionsकॉलर को सीडीईसी कॉलिंग सम्मेलन में ढेर को क्यों साफ़ करना है?
push c
push b
push a
call function_name
add esp, 12 ;Stack clearing
mov x, eax
क्यों हम स्पष्ट रूप से ढेर स्पष्ट करने के बाद कहा जाता है समारोह ढेर इसलिए ढेर सूचक बहाल बंद मापदंडों poped है चाहिए ईएसपी के लिए 12 को जोड़ने की जरूरत है ...?
एक और सवाल:
सैद्धांतिक रूप से, यह कॉल प्राप्त करने वाला सफाई सही की देखभाल करने के साथ चर पैरामीटर कार्यों को लागू करने (उदाहरण के लिए यदि आप एक रजिस्टर में स्टैक पर तर्क की संख्या से पारित) संभव हो सकता है?
बिल्कुल। सी कार्यों के साथ, कॉलर स्टैक पर कई तर्कों को धक्का दे सकता है क्योंकि इसे फ़ंक्शन कॉल करने से पहले पसंद है। बुलाया गया फ़ंक्शन बस यह नहीं जानता कि कितने साफ किए जाने चाहिए। –
कैली को कैसे पता चलता है कि इसे कितने पैरामीटर कहा जाता था ताकि वह सुरक्षित रूप से उन तक पहुंच सके? Printf() के मामले में यह प्रारूप स्ट्रिंग को पार्स कर सकता है लेकिन अन्यथा यह कैसे करता है? – anon
http://en.wikipedia.org/wiki/Stdarg.h –