تحميل الكل
LOADALL هو الاسم الشائع لتعليمات آلية غير موثقة في معالجات Intel 80286 و Intel 80386 ، والتي تتيح الوصول إلى مناطق في حالة المعالج الداخلية تقع عادةً خارج نطاق واجهة برمجة التطبيقات IA-32 ، مثل سجلات ذاكرة التخزين المؤقت للوصف . يُشفّر رمز LOADALL لمعالجات 286 بالرمز 0Fh 05h، [ 1 ] بينما يُشفّر لمعالجات 386 بالرمز 0Fh 07h. [ 2 ]
كلا الإصدارين - كما يوحي الاسم - يقومان بتحميل جميع سجلات وحدة المعالجة المركزية الداخلية في عملية واحدة. يتميز الأمر LOADALL بقدرته الفريدة على إعداد الجزء المرئي من سجلات القطاعات (المحدد) بشكل مستقل عن الجزء المخزن مؤقتًا المقابل لها، مما يسمح للمبرمج بوضع وحدة المعالجة المركزية في حالات غير مسموح بها في نموذج البرمجة الرسمي .
الاستخدام
كمثال على فائدة هذه التقنيات، يمكن لـ LOADALL إعداد وحدة المعالجة المركزية للسماح بالوصول إلى جميع الذاكرة من الوضع الحقيقي ، دون الحاجة إلى تحويلها إلى الوضع غير الحقيقي (الذي يتطلب التحويل إلى الوضع المحمي ، والوصول إلى الذاكرة، ثم التبديل مرة أخرى إلى الوضع الحقيقي). استخدمت برامج مثل إصدارات ما قبل XMS من RAMDRIVE.SYS (1985)، [ 3 ] [ 1 ] [ 4 ] SMARTDRV.SYS (1986) [ 4 ] بالإضافة إلى HIMEM.SYS (2.03، 1988-08-04 ؛ 2.04، 1988-08-17) [ 4 ] برامج التشغيل في MS-DOS ، و Uniform Software Systems ' The Extender (1985) و The Connector (1985) لـ Lotus 1-2-3 ، و Above Disk (1986) [ 5 ] (وهو LIMulator من Above Software (المعروفة سابقًا باسم Tele-Ware West أو Los Angeles Securities Group ) الذي يحول مساحة القرص الصلب أو الذاكرة الموسعة إلى ذاكرة موسعة )، و OS/2 1.0 [ 3 ] [ 1 ] و 1.1 [ 6 ] تعليمات 286 LOADALL. حجز نظاما التشغيل DOS 3.3 و4.0 مخزنًا مؤقتًا بحجم 102 بايت عند العنوان 0070:0100h (والذي كان يشغله عادةً بيانات BIOS الخاصة بنظام DOS ) لتجنب الحاجة إلى حفظه واستعادته عند تنفيذ أمر LOADALL. يُعالج برنامج EMM386.EXE من مايكروسوفت تعليمات LOADALL الخاصة بمعالجَي 286 و386 في معالج التعليمات غير الصالحة . [ 7 ] يُظهر فحص كود مراقبة الآلة الافتراضية في Windows/386 2.10 أنه يستخدم كلاً من إصدار 286 والإصدار الأقل شهرة 386. كما استخدم برنامج HIMEM.SYS من مايكروسوفت، الإصدار 2.06 [ 8 ] ، أمر LOADALL لنسخ البيانات بسرعة من وإلى الذاكرة الموسعة على أنظمة 286.
كان من الممكن استخدام أمر LOADALL بطريقة أخرى مثيرة للاهتمام، كما ورد في كتاب " تصميم نظام التشغيل OS/2 " [ 9 ]، وذلك للسماح بتشغيل برامج الوضع الحقيقي السابقة في وضع الحماية ذي 16 بت، كما هو مستخدم في نظام التشغيل Concurrent DOS 286 من شركة Digital Research منذ عام 1985 [ 10 ] [ 11 ] [ 12 ] ، وكذلك في نظامي التشغيل FlexOS 286 [ 13 ] و IBM 4680 [ 14 ] [ 15 ] منذ عام 1986. كان من شأن وضع علامة "غير موجود" على جميع ذاكرات التخزين المؤقت للواصفات في جداول وصف الواصفات العامة (GDT) وجداول وصف الواصفات المحلية ( LDT) أن يسمح لنظام التشغيل برصد عمليات إعادة تحميل سجلات القطاعات، بالإضافة إلى محاولات إجراء "عمليات حسابية خاصة بالقطاعات" في الوضع الحقيقي، ومحاكاة السلوك المطلوب عن طريق تحديث واصفات القطاعات (باستخدام أمر LOADALL مرة أخرى). إلا أن " وضع محاكاة 8086 " هذا، الخاص بمعالج 80286، كان بطيئًا جدًا لدرجة تجعله غير عملي. كان لا بد من التخلي عن الفكرة إلى حد كبير بسبب وجود أخطاء في بعض معالجات Intel 80286 المبكرة قبل إصدار E-2 . [ 10 ] [ 11 ] [ 13 ] ونتيجة لذلك، كان على نظام التشغيل OS/2 1.x - وكذلك نظام Windows في الوضع "القياسي" - تشغيل برامج DOS في الوضع الحقيقي. ومع ذلك، لم تُهمل الفكرة؛ فقد دفعت Intel إلى تقديم وضع 8086 الافتراضي لمعالج 80386، مما سمح بتنفيذ " صناديق DOS " أخيرًا بطريقة فعالة وموثقة نسبيًا.
لأن الأمر LOADALL لم يقم بأي فحوصات على صحة البيانات المحملة في سجلات المعالج، فقد كان من الممكن تحميل حالة معالج لا يمكن الوصول إليها بشكل طبيعي، مثل استخدام الوضع الحقيقي (PE=0) مع الترحيل (PG=1) على وحدات المعالجة المركزية من فئة 386. [ 2 ]
المحاكي داخل الدائرة (ICE) هو أداة تُستخدم لتصحيح الأخطاء على مستوى منخفض . في معالج Intel 80386، يؤدي تفعيل الدبوس غير الموثق في الموقع B6 إلى إيقاف المعالج عن العمل ودخوله في وضع ICE. يحفظ المعالج حالته بالكامل في منطقة ذاكرة معزولة عن ذاكرة النظام العادية. تصميم هذه المنطقة مناسب لتعليمات LOADALL، والتي يستخدمها كود ICE للعودة إلى التنفيذ العادي.
في المعالجات اللاحقة، تطور هذا إلى وضع إدارة النظام (SMM). في وضع إدارة النظام، تُستخدم تعليمة RSM لتحميل حالة وحدة المعالجة المركزية بالكامل من منطقة ذاكرة. يشبه تخطيط منطقة الذاكرة هذه تخطيط تعليمة LOADALL. [ 16 ] يمكن تنفيذ تعليمة LOADALL بنمط 386 على معالجات 486 أيضًا، ولكن فقط في وضع إدارة النظام. في المعالجات اللاحقة، حلت تعليمة RSM، بتشفير مختلف، محلها.
يقوم برنامج Codeview 3.0 من مايكروسوفت وبرنامج Turbo Debugger 2.0 من بورلاند بفك تشفير تعليمات LOADALL الخاصة بمعالجات 286 و386 بشكل صحيح. [ 1 ]
نظرًا لعدم توثيق تعليمات LOADALL وعدم وجودها في المعالجات اللاحقة، أُعيد استخدام رموزها في بنية AMD64 . [ 17 ] أصبح رمز تعليمة LOADALL في معالج 286، وهو 0F05، هو تعليمة SYSCALL في AMD64؛ وأصبح رمز تعليمة LOADALL في معالج 386، وهو 0F07، هو تعليمة SYSRET. وقد طُبقت هذه التعريفات حتى على معالجات Intel مع إطلاق تطبيق Intel 64 لبنية AMD64. [ 18 ]
80286
Opcode 0F05. تقوم هذه التعليمات بقراءة البيانات من العناوين 0x00800–0x00866، بغض النظر عن محتوى سجلات المقطع.
| عنوان | عدد البايتات | يسجل | يسجل | يسجل | يسجل |
|---|---|---|---|---|---|
| 00800 | 6 | غير مستخدم | |||
| 00806 | 2 | MSW، كلمة حالة الجهاز | |||
| 00808 | 14 | غير مستخدم | |||
| 00816 | 2 | سجل المهام (TR) | |||
| 00818 | 2 | الأعلام | |||
| 0081A | 2 | IP (مؤشر التعليمات) | |||
| 0081C | 2 | LDTR، سجل جدول الواصفات المحلي | |||
| 0081E | 4× 2 | DS ( قطاع البيانات ) | SS (قطاع المكدس) | CS (مقطع الكود) | ES (جزء إضافي) |
| 00826 | 4× 2 | مؤشر الوجهة (DI) | SI (مؤشر المصدر) | BP (مؤشر القاعدة) | مؤشر المكدس (SP) |
| 0082E | 4× 2 | BX | دي إكس | تجربة العملاء | الفأس |
| 00836 | 4× 6 | واصف مقطع ES | واصف مقطع CS | واصف مقطع SS | واصف مقطع DS |
| 0084E | 4× 6 | GDT، جدول الواصفات العالمي | LDT، جدول الواصفات المحلي | IDT، جدول وصف المقاطعات | مقطع حالة المهمة (TSS) |
لا يمكن استخدام تعليمة LOADALL في معالج 80286 للتبديل من الوضع المحمي إلى الوضع الحقيقي [ 19 ] (إذ لا يمكنها مسح بت PE في MSW). مع ذلك، يمكن استخدام تعليمة LOADALL لتجنب الحاجة إلى التبديل إلى الوضع المحمي تمامًا.
80386
رمز العملية 0F07. تقوم هذه التعليمة بتحميل البيانات من العنوان ES:EDI. وهي في الواقع تستخدم ES، وليس واصف ES.
| عنوان | عدد البايتات | يسجل | يسجل | يسجل | يسجل |
|---|---|---|---|---|---|
| ES:EDI+00 | 4 | CR0، سجل التحكم 0 | |||
| ES:EDI+04 | 4 | أعلام إلكترونية | |||
| ES:EDI+08 | 4 | مؤشر التعليمات (EIP) | |||
| ES:EDI+0C | 4× 4 | فهرس الوجهة، EDI | ESI، فهرس المصدر | EBP، مؤشر القاعدة | ESP، مؤشر المكدس |
| ES:EDI+1C | 4× 4 | EBX | EDX | بورصة السلع الأوروبية (ECX) | إي إيه إكس |
| ES:EDI+2C | 2× 4 | DR6 | DR7 | ||
| ES:EDI+34 | 4 | TR، مُحدد حالة المهمة | |||
| ES:EDI+38 | 4 | LDTR، جدول الواصفات المحلي | |||
| ES:EDI+3C | 4× 2 | GS، مقطع إضافي | غير مستخدم | FS، مقطع إضافي | غير مستخدم |
| ES:EDI+44 | 4× 2 | DS، مقطع البيانات | غير مستخدم | SS، مقطع مكدس | غير مستخدم |
| ES:EDI+4C | 4× 2 | CS، مقطع الكود | غير مستخدم | ES، مقطع إضافي | غير مستخدم |
| ES:EDI+54 | 4× 12 | مُعرِّف TSS، مُحدِّد حالة المهمة | وصف IDT، جدول وصف المقاطعة | مُعرِّف GDT، جدول المُعرِّفات العالمي | مُعرِّف LDT، جدول المُعرِّفات المحلي |
| ES:EDI+84 | 4× 12 | واصف مقطع GS | واصف مقطع FS | واصف مقطع DS | واصف مقطع SS |
| ES:EDI+B4 | 2× 12 | واصف مقطع CS | واصف مقطع ES |
انظر أيضاً
مراجع
- 1 2 3 4 شولمان، أندرو؛ ميشيلز، ريموند جيه؛ كايل، جيم؛ باترسون، تيم ؛ ماكسي، ديفيد؛ براون، رالف دي. (1990). نظام التشغيل DOS غير الموثق: دليل المبرمج لوظائف MS-DOS المحجوزة وهياكل البيانات (الطبعة الأولى ). أديسون-ويسلي . الصفحات 14-15 . ISBN 978-0-201-57064-9.(١٨+٦٩٤+٨ صفحات، ٢× ٥.٢٥ بوصة-أقراص مرنة)) تصحيحات:
- 1 2 فان جيلوي، فرانك (1994). الحاسوب الشخصي غير الموثق ( الطبعة الأولى). أديسون-ويسلي . الصفحات 62-70 . ISBN 0-201-62277-7.
- 1 2 دنكان، راي؛ بيتزولد، تشارلز ؛ بيكر، إم. ستيفن؛ شولمان، أندرو؛ ديفيس، ستيفن ر.؛ نيلسون، روس ب.؛ موت، روبرت (1990). توسيع نظام التشغيل DOS ( الطبعة الأولى). ريدينغ، ماساتشوستس، الولايات المتحدة الأمريكية: شركة أديسون-ويسلي للنشر، الصفحات 100-103 . ISBN 0-20155053-9.
- 1 2 3 نيكاسيك، ميخال (27-10-2013). "المزيد حول LOADALL وOS/2" . متحف OS/2 . تم الاسترجاع في 17-10-2018 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ كولينز، روبرت ر. (أكتوبر 1991). "تعليمات LOADALL" . مجلة TECH Specialist - مجلة مطوري الحواسيب الشخصية المتقدمين . 2 (10). لورانس، كانساس، الولايات المتحدة الأمريكية: منشورات R&D. ISSN 1049-913X . مؤرشف من الأصل في 20 فبراير 2020. تم الاطلاع عليه في 17 أكتوبر 2018 . (ملاحظة: سرعان ما تم تغيير اسم المجلة إلى "The DOS Developers Journal" ثم في النهاية إلى "The Windows/DOS Developer's Journal" (ISSN 1059-2407).)
- ↑ نيكاسيك، ميخال (18 مارس 2011). "HIMEM.SYS، الوضع غير الواقعي، وLOADALL" . متحف نظام التشغيل OS/2 . مؤرشف من الأصل في 3 يناير 2017. تم الاطلاع عليه في 3 يناير 2017 .
- ↑ شولمان، أندرو؛ براون، رالف د .؛ ماكسي، ديفيد؛ ميشيلز، ريموند ج.؛ كايل، جيم (1994) [نوفمبر 1993]. ويليامز، أندرو (محرر). نظام التشغيل DOS غير الموثق: دليل المبرمج لوظائف MS-DOS المحجوزة وهياكل البيانات - موسع ليشمل MS-DOS 6 وNovell DOS وWindows 3.1 . سلسلة أندرو شولمان للبرمجة (الطبعة الأولى، الطبعة الثانية). ريدينغ، ماساتشوستس، الولايات المتحدة الأمريكية: شركة أديسون ويسلي للنشر . ص 42. ISBN 0-201-63287-X.(18+856+6 صفحات، قرص مرن 3.5 بوصة)) تصحيحات:
- ↑ "شفرة مصدر Microsoft HIMEM.SYS 2.06" . خادم FTP ( FTP ).(للاطلاع على المستندات، انظر صفحة المساعدة: FTP )
- ↑ ديتيل، هارفي م.؛ كوجان، مايكل س. (1992). تصميم نظام التشغيل OS/2 . أديسون-ويسلي . ISBN 0-201-54889-5.
- 1 2 فوستر، إدوارد (13 مايو 1985). "نظام التشغيل Super DOS ينتظر معالج 80286 الجديد - نظام Concurrent DOS 286 - مؤجل حتى تقوم إنتل بترقية الشريحة - يوفر قوة نظام Xenix وتوافقه مع أجهزة IBM PC" . InfoWorld . 7 (19). مجموعة InfoWorld الإعلامية : 17-18 . ISSN 0199-6649 . تاريخ الاسترجاع: 21 أبريل 2019 .
{{cite journal}}: CS1 maint: deprecated archiveal service ( link ) - 1 2 فوستر، إدوارد (26 أغسطس 1985). "إنتل تعرض شريحة 80286 الجديدة - مستقبل نظام التشغيل DOS 286 المتزامن من DRI لا يزال غير واضح بعد إصلاح المعالج" . إنفوورلد . 7 (34). مجموعة إنفوورلد الإعلامية : 21. ISSN 0199-6649 . تاريخ الاسترجاع: 21 أبريل 2019 .
{{cite journal}}: CS1 maint: deprecated archiveal service ( link ) - ↑ "Concurrent DOS 68K 1.2 – Developer Kit for Motorola VME/10 – Disk 2" . 1986-08-06 [1986-04-08]. مؤرشف من الأصل في 2019-04-03 . تم الاطلاع عليه في 2018-09-13 .(ملاحظة: تتضمن هذه الحزمة أيضًا بعض ملفات الرأس من Concurrent DOS 286 ، بما في ذلك STRUCT.H الذي يذكر صراحةً LOADALL لـ "محاكاة 8086".)
- ملحق FlexOS لأجهزة الكمبيوتر التي تعمل بمعالج Intel iAPX 286 (ملف PDF) . الإصدار 1.3 ( الطبعة الأولى). شركة Digital Research، نوفمبر 1986. مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 21 أبريل 2019. تاريخ الاسترجاع: 14 أغسطس 2018 .
- ↑ كالف، ميليسا؛ فوربس، جيم (10 فبراير 1986). "شركة آي بي إم ستستخدم نظام تشغيل DRI" . إنفوورلد . مجموعة إنفوورلد الإعلامية . تاريخ الاسترجاع: 6 سبتمبر 2011 .
{{cite journal}}: CS1 maint: deprecated archiveal service ( link ) - ↑ "شركة IBM تختار نظام التشغيل Concurrent DOS-286 لنظام PC AT المخصص للبيع بالتجزئة" (ملف PDF) . المجلة الأوروبية للمراجعة (18). البحث الرقمي : 1 مارس 1986. مؤرشف (ملف PDF) من الأصل بتاريخ 3 أبريل 2019. تاريخ الاطلاع: 15 سبتمبر 2018 .
- ↑ كولينز، روبرت ر. (يناير 1997). "وضع إدارة النظام من إنتل" . مؤرشف من الأصل في 3 يناير 2017. تم الاطلاع عليه في 3 يناير 2017 .
- ↑ نيكاسيك، ميخال (18 أكتوبر 2013). "LOADALL يضرب مجدداً" . متحف OS/2 . مؤرشف من الأصل في 3 يناير 2017. تم الاطلاع عليه في 27 يناير 2016 .
- ↑ "دليل مطوري برامج معمارية Intel 64 و IA-32، المجلد 2B" (ملف PDF) . شركة Intel . ديسمبر 2015. مؤرشف (ملف PDF) من الأصل بتاريخ 21 أبريل 2019. تم الاطلاع عليه بتاريخ 27 يناير 2016 .
- ↑ سلاتر، مايكل (أكتوبر 1987). "تعليمات LOADALL السرية في معالج 286 تسمح بالوصول إلى الذاكرة الموسعة في الوضع الحقيقي". تقرير المعالج الدقيق .
للمزيد من القراءة
- المرجع التقني لنظام التشغيل IBM/2 - عائلة البرمجة (ملف PDF) . المجلد 1 ( الطبعة الأولى). IBM . سبتمبر 1987 [1986]. مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 3 يناير 2017.
- تشابل، جيف (يناير 1994). شولمان، أندرو؛ بيدرسن، أموريت (محرران). أساسيات نظام التشغيل DOS . سلسلة أندرو شولمان للبرمجة (الطبعة الأولى، الإصدار الأول). شركة أديسون ويسلي للنشر . الصفحات 4، 21، 100-106 ، 127-129 . ISBN 978-0-201-60835-9.(xxvi+738+iv صفحات، قرص مرن 3.5 بوصة)) تصحيحات:
- تشابل، جيف (2008-10-03) [1997-03-18]. "أشياء غريبة يعرفها برنامج LINK عن معالجات 80x86" . مؤرشف من الأصل بتاريخ 2019-04-21 . تم الاطلاع عليه بتاريخ 2019-04-21 .
- نيكاسيك، ميخال (13 ديسمبر 2014). "تعليمات غريبة" . متحف OS/2 . مؤرشف من الأصل بتاريخ 21 أبريل 2019. تم الاطلاع عليه بتاريخ 21 أبريل 2019 .
- ستيلر، أندرياس (1990). "المر من أجل 32-المر". c't - مجلة für Computertechnik (باللغة الألمانية). المجلد. 1990، لا. 8. ص. 202.
- جوفا، نوربرت؛ سيرينج، بيتر (1990). "Wege über die Mauer. Loadall - الذاكرة الموسعة في الوضع الحقيقي لـ 80286". c't - مجلة für Computertechnik (باللغة الألمانية). المجلد. 1990، لا. 11. ص 362 – 366.
- تعليمات X86
