كيف يتم تحديد سجل القطاع الضمني للمؤشر القريب؟
-
04-10-2019 - |
سؤال
في القسم 4.3 من دليل مطور برامج Intel 64® و IA-32. المجلد 1: الهندسة المعمارية الأساسية, ، انها تقول:
المؤشر القريب هو إزاحة 32 بت ... داخل شريحة. يتم استخدام المؤشرات القريبة لجميع مراجع الذاكرة في نموذج ذاكرة مسطحة أو للمراجع في نموذج مجزأ حيث تكون هوية الجزء الذي يتم الوصول إليه ضمنيًا.
هذا يقودني إلى التساؤل: كيف يتم تحديد سجل القطاع الضمني؟
وأنا أعلم ذلك (%eip)
ونازح (%eip)
(على سبيل المثال -4(%eip)
) عناوين استخدام %cs
بشكل افتراضي ، وذاك (%esp)
ونازح (%esp)
العنوان استخدام %ss
, ، لكن ماذا عن (%eax)
, (%edx)
, (%edi)
, (%ebp)
وما إلى ذلك ، وهل يمكن أن يعتمد سجل القطاع الضمني أيضًا على التعليمات التي يظهر فيها معامل عنوان الذاكرة؟
المحلول
غير ذلك CS
و SS
تسجيل الوصول الذي ذكرته ، وسوف تستخدم معظم الوصول الآخر DS
سجل المقطع. استثناءين يمكن أن أتذكره:
- سوف تستخدم التعليمات الموجهة نحو السلسلة
ES
ل "الوجهة" (ضمنيًا معالجةEDI
سجل) سجل القطاع - تصل الذاكرة باستخدام
EBP
التسجيل كـ "عنوان أساسي" سيستخدم السجلSS
سجل المقطع. ومع ذلك ، إذا كانEBP
يتم استخدام السجل كسجل فهرس مقاس ، وسيكون القطاع المستخدمDS
(ما لم يكن سجل العنوان الأساسي هوESP
)