উইকিপিডিয়া থেকে আগত এই উদাহরণটি ব্যবহার করে , যেখানে ড্রস্কয়ার () ড্রলাইন () কে কল করে,
(দ্রষ্টব্য যে এই চিত্রটির নীচের দিকে উচ্চ ঠিকানা এবং শীর্ষে নিম্ন ঠিকানা রয়েছে))
কেউ কি আমাকে ব্যাখ্যা কি গেল ebp
এবং esp
এই প্রেক্ষাপটে হয়?
আমি যা দেখছি তা থেকে, আমি স্ট্যাকের পয়েন্টারটি সর্বদা স্ট্যাকের শীর্ষে এবং বর্তমান ফাংশনের শুরুতে বেস পয়েন্টারটি বলতে পারি? অথবা কি?
সম্পাদনা: উইন্ডোজ প্রোগ্রামগুলির প্রসঙ্গে আমি এটি বোঝাতে চাইছি
edit2: এবং কিভাবে eip
কাজ করে?
edit3: আমার এমএসভিসি ++ থেকে নিম্নলিখিত কোড রয়েছে:
var_C= dword ptr -0Ch
var_8= dword ptr -8
var_4= dword ptr -4
hInstance= dword ptr 8
hPrevInstance= dword ptr 0Ch
lpCmdLine= dword ptr 10h
nShowCmd= dword ptr 14h
এগুলির সমস্তগুলি ডিফোর্ড বলে মনে হচ্ছে, এইভাবে প্রতি 4 টি বাইট নেয়। সুতরাং আমি দেখতে পাচ্ছি hInstance থেকে 4 বাইটের var_4 পর্যন্ত একটি ফাঁক রয়েছে। তারা কি? আমি ধরে নিলাম এটি রিটার্ন ঠিকানা, যেমন উইকিপিডিয়া ছবিতে দেখা যাবে?
(সম্পাদকের দ্রষ্টব্য: মাইকেল এর উত্তর থেকে একটি দীর্ঘ উক্তি সরিয়েছে, যা প্রশ্নে অন্তর্ভুক্ত নয়, তবে একটি অনুসরণ প্রশ্নটি সম্পাদনা করা হয়েছিল):
এটি কারণ ফাংশন কলটির প্রবাহ হ'ল:
* Push parameters (hInstance, etc.)
* Call function, which pushes return address
* Push ebp
* Allocate space for locals
আমার প্রশ্ন (সর্বশেষে, আমি আশা করি!) এখন হ'ল, তাত্ক্ষণিকভাবে ঠিক কী ঘটেছিল আমি প্রোলোগুলির শেষের দিকে ফোন করতে চাইছি এমন ফাংশনটির যুক্তিগুলি পপ করার জন্য? আমি জানতে চাই যে এই মুহুর্তগুলিতে ebp, esp কীভাবে বিকশিত হয় (আমি ইতিমধ্যে বুঝতে পারি কীভাবে প্রলজ কাজ করে, আমি কেবল স্ট্যাকের উপরে এবং প্রলোগের আগে যুক্তিগুলি ঠেকানোর পরে কী ঘটছে তা জানতে চাই)।