पर कैसे धक्का दिया जाता है, मुझे यह जानने की ज़रूरत है कि, जब सी ++ में कक्षा विधि कहलाती है, तो निहित 'यह' सूचक पहला तर्क है, या अंतिम। यानी: क्या इसे पहले या आखिरी स्टैक पर धक्का दिया जाता है।सी ++ इसे निहित करता है, और वास्तव में इसे स्टैक
दूसरे शब्दों में, मैं पूछ रहा हूँ कि क्या एक वर्ग विधि, बुलाया जा रहा है, संकलक द्वारा लिया जाता है होना करने के लिए:
int foo::bar(foo *const this, int arg1, int arg2);
//or:
int foo::bar(int arg1, int arg2, foo *const this);
विस्तार करने पर इसलिए, और अधिक महत्वपूर्ण बात यह है कि यह भी कि क्या जी का जवाब होगा ++ होगा क्रमशः अंतिम या पहले इस सूचक को धक्का दें। मैंने Google से पूछताछ की, लेकिन मुझे ज्यादा नहीं मिला।
और एक साइड नोट के रूप में, जब सी ++ फ़ंक्शन कहा जाता है, तो क्या वे सी फ़ंक्शंस के समान काम करते हैं? i.e:
push ebp
mov ebp, esp
सभी में: क्या एक वर्ग विधि को इस तरह दिखने वाला कहा जाएगा?
; About to call foo::bar.
push dword 0xDEADBEEF
push dword 0x2BADBABE
push dword 0x2454ABCD ; This one is the this ptr for the example.
; this code example would match up if the this ptr is the first argument.
call _ZN3foo3barEpjj
धन्यवाद, और बहुत अधिक बाध्य।
संपादित करें: बातें, मैं उपयोग कर रहा हूँ जीसीसी/जी ++ 4.3
आपके लिए यह प्रश्न पूछने के लिए तेज़ी से और आपके कंपाइलर द्वारा उत्पन्न असेंबली को देखें। वे सभी पाठ के रूप में आउटपुट असेंबली कोड स्विच करने के लिए स्विच कर दिया है। –