سؤال

هؤلاء هم "مبرمج مرئي" سجل X86-64:

alt text
(مصدر: usenix.org.)

ماذا عن السجلات غير المرئية؟ فقط تعلمت أن سجلات MMU، الجدول واصف المقاطعة (IDT) يستخدم السجلات غير المرئية هذه. أنا أتعلم هذه الأشياء بالطريقة الصعبة. هل هناك أي مورد (كتاب / وثائق / إلخ) التي تعطيني الصورة كاملة في وقت واحد؟

أنا على علم بسجلات مبرمجة مرئية ومريحة في البرمجة معها. أريد فقط أن أتعلم عن سجلات غير مرئية ووظائفها. أريد الحصول على صورة كاملة. أين يمكنني الحصول على هذه المعلومات؟

تعديل:

أريد الحصول على صورة كاملة. أين يمكنني الحصول على هذه المعلومات؟

هؤلاء هم الكتابان ساعدتان في فهم هذه التفاصيل منخفضة المستوى.

  1. أساسيات تنظيم الكمبيوتر والتصميم ~ Sivarama P. Dandamudi - 1 طبعة (2003)
  2. تنظيم الكمبيوتر والتصميم: واجهة الأجهزة / البرامج، الإصدار الرابع، ~ ديفيد أ. باترسون، جون L. هينيسي
هل كانت مفيدة؟

المحلول

IDT هو جدول واصف المقاطعة، والذي يحتوي على شيء من هذا القبيل من وجهة نظر مجردة، يتم حجز المقاطعات الثمانية عشر الأولى من قبل المعالج، ثمانية عشر المقبل مخصصة من قبل Intel للسيطرة على المستقبل بنية الرقاقة ...

معالج المقاطعة 0 divide_by_zero_handler 1 debug_handler .. ... 13 general_exception_handler 14 page_fault_handler .. ... 18 machine_check_handler

في هذا السياق، يعد المعالجون جزءا من لعبة Kernel لعبة، ويتم إعداد كل من المعالجين في وقت التمهيد، قبل تحميل رمز المستخدم المستخدم. (BIOS هو 16 بت رمز AKA رمز الوضع الحقيقي)، يقوم Kernel بإعداد المعالجات، والتحول إلى وضع محمي 32 بت، عند إصدار أي من المقاطعات، يتم تنفيذ المعالج المناسب حسب رقم المقاطعة. على سبيل المثال، إذا تم إنشاء المقاطعة 14، فسوف ينفذ النواة page_fault_handler, ، تحقق من أن الصفحة قذرة وإقامة على القرص، ثم قم بتحميل تلك الصفحة في الذاكرة، وإصلاح العناوين واضحة القليل القذر، وينفذ IRET تقاطع تعليمات العودة للمتابعة، وتخليص الأعلام ....

هذا هو منظر مجردة لكيفية عمل IDT ... هناك أشياء أكثر تعقيدا تسير وراء الكواليس ... اعتمادا على بنية ونوع إدارة الذاكرة مثل مخططات معالجة العملة / المسطحة / المحمية / الوضع الافتراضي ...

إلقاء نظرة هنا في شركة انتل الوثائق التي تعطي وجهة نظر ممتازة وشاملة لبرمجة إنتل ...

تعديل:مرة أخرى في الأيام الخوالي من DOS (والتي كانت رمز 16 بت وغير جيدة، بالضبط الذاكرة المحمية)، كان من الممكن إعادة توجيه معالجات المقاطعة إلى معالجاتك الخاصة وبالتالي تراكب IDT الأصلي، مثال على هذه المقاطعة، المقاطعة 9 أي مقاطعة لوحة المفاتيح (المقاطعات BIOS في هذا السياق) باستخدام getvect(...) و setvect(...) المكالمات، يمكنك أيضا التعامل مع بعض (وليس جميع المقاطعات المعالج، لا سيما، IDT 0 للقسمة على الصفر) ... على الرغم من أن مقاطعات BIOS كانت مشابهة تماما في مظهر المقاطعات المعالج، فقد شاركت ميزة مشتركة، كلاهما لديك جدول ناقلات المقاطعة (كما كان معروفا بعد ذلك). كان هذا هو كيف تمكنت TSR (إنهاء البقاء المقيمين) من الحفاظ على إعادة الدخول في DOS نتيجة لمقاطعات BIOS إعادة توجيهها إلى معالجات TSR ...

نصائح أخرى

ستحتاج إلى دراسة دليل مراجع المعالج لمعالج معين الذي تهتم به. إليك دليل مرجع معالج إيتانيوم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top