السلام عليكم و رحم ة ا لله
اريد ان اضع لكم مجموعة من الاسئلة التى لم استطع ان اعثر لها على
جواب,
اولا فى مجال تنظيم الذاكرة فى البرنامج:
الكل يعلم ان الاسمبلى المعدة لنعمل على 32bit يتم وضع البرنامج فى
segment واحد و ذلك نسبة لحجم السكمنت الكبير. هذا كان لان
16 بت اسمبلى كان حجم السكمنت 2^16 وهى تقريبا 64 كيلوبايت
اما 32 بت صار الحجم فيها 4 غيغا بايت او اكبر قليلا.
عندى معلومات ضئيلة و اظن ان بعضها مغلوط:
اعرف ان المسجل ESP و الذى يؤشر الى الاستاك ياخذ القيمة 0xfffffffe
عند بداية البرنامج حيث يؤشر الى نهاية السكمنت( ECS, EDS,ESS,EESكلها
تاخذ نفس القيمة لان السكمنت كبير و كافى) و عند اضافة push اى شئ للاستاك
تنقص القيمة فى ESP بمقدار 4 اى DWORD. من ما قلت يعنى الاستاك ياخذ
نهاية السكمنت و يتمدد متجه الى بداية السكمنت.
اذا كان ما ذكرت صحيحا فلابد ان يتشارك ال data و ال code بداية السكمنت
و يتمددا فى اتجاه الاستاك, اعلم ايضا ان الابيانات يتم التاشيؤ اليها بالمسجل EBP
و الكود ب EIP و لكن كيف يتم التوفيق بينهما, هل يختلطان ام ماذا؟
عندى سؤال اخر يمكن ان يتعلق بالاول (و لو انى ارى ان الاسمبلى لا تتجذاء)
اريد ان اسال عن الاستثنات فى الاسمبلى(Structured Exception Handeling)
هذا الموضوع فى الحقيقة تعبنى و لم استطع ان اتفهم ما هو FS .
يا ريت القى اجابة مرفق معها كود, حتى استطيع ان استوعب جيدا.