بنية PDP-11
تُعدّ بنية PDP -11 [ 1 ] بنيةً لمجموعة تعليمات CISC ذات 16 بت ، طوّرتها شركة Digital Equipment Corporation (DEC). وتُستخدم هذه البنية في وحدات المعالجة المركزية (CPUs) والمعالجات الدقيقة في الحواسيب الصغيرة PDP-11 . وقد شاع استخدامها خلال سبعينيات القرن العشرين، إلا أنها تراجعت أمام بنية VAX الأكثر قوةً في ثمانينيات القرن نفسه.
سجلات وحدة المعالجة المركزية
تحتوي وحدة المعالجة المركزية على ثمانية سجلات عامة الأغراض ذات 16 بت (من R0 إلى R7). السجل R7 هو عداد البرنامج (PC). على الرغم من إمكانية استخدام أي سجل كمؤشر للمكدس، إلا أن R6 هو مؤشر المكدس (SP) المستخدم للمقاطعات والتحذيرات الخاصة بالأجهزة. غالبًا ما يُستخدم R5 للإشارة إلى إطار استدعاء الإجراء الحالي. لتسريع تبديل السياق، توفر بعض طرازات PDP-11 مجموعتين من السجلات R0-R5. تحتوي أوضاع النواة، والمشرف (إن وُجد)، والمستخدم على خرائط ذاكرة منفصلة، وكذلك مؤشرات مكدس منفصلة (بحيث لا يستطيع برنامج المستخدم التسبب في خلل في النظام عن طريق تخزين قيمة غير صالحة في سجل مؤشر المكدس).
ذاكرة
تنسيقات البيانات
أصغر وحدة للذاكرة القابلة للعنونة والكتابة هي البايت ذو 8 بت . ويمكن أيضاً تخزين البايتات في النصف السفلي من المسجلات من R0 إلى R5.
تُخزَّن الكلمات ذات 16 بت بنظام الترتيب الصغير (little-endian) ، حيث تكون البايتات الأقل أهمية في العنوان الأدنى. وتكون الكلمات محاذية دائمًا لعناوين الذاكرة الزوجية. ويمكن تخزين الكلمات في المسجلات من R0 إلى R7.
لا يمكن تخزين الكلمات المزدوجة ذات 32 بت في مجموعة التعليمات الموسعة (EIS) إلا في أزواج من المسجلات، حيث تُخزن الكلمة ذات الرقم الأعلى في المسجل ذي الرقم الأدنى. وتُستخدم الكلمات المزدوجة في تعليمات الضرب (MUL) والقسمة (DIV) والجمع (ASHC). وتُدعم بيانات أخرى ذات 32 بت كامتدادات للبنية الأساسية: تُخزن بيانات الفاصلة العائمة أحادية الدقة في مجموعة تعليمات الفاصلة العائمة (FIS) ومجموعة تعليمات خيار معالج الفاصلة العائمة (FPP) للطرازين 11/45 ومعظم الطرازات اللاحقة، بالإضافة إلى البيانات الطويلة في مجموعة التعليمات التجارية (CIS)، بأكثر من تنسيق واحد، بما في ذلك تنسيق النهاية الوسطى غير المألوف [ 2 ] [ 3 ] والذي يُشار إليه أحيانًا باسم "PDP-endian".
يدعم خيار FPP تنسيق الفاصلة العائمة مزدوج الدقة 64 بت.
إدارة الذاكرة
يمكن لعناوين PDP-11 ذات 16 بت عنونة 64 كيلوبايت . وبحلول الوقت الذي حلّت فيه VAX محل PDP-11، أصبحت البايتات ذات 8 بت والتدوين الست عشري معيارًا في الصناعة؛ ومع ذلك، تستخدم القيم العددية على PDP-11 دائمًا التدوين الثماني، ويتم التعبير عن مقدار الذاكرة المتصلة بـ PDP-11 دائمًا بعدد الكلمات. تبلغ مساحة العناوين المنطقية الأساسية 32 ألف كلمة، لكن الجزء العلوي من مساحة العناوين الفيزيائية البالغ 4 كيلوبايت (العناوين من 160000 إلى 177777 في حالة عدم وجود إدارة للذاكرة) لا يتم ملؤه لأن سجلات الإدخال/الإخراج على الناقل تستجيب للعناوين في هذا النطاق. لذلك، في الأصل، كان لدى PDP-11 الموسع بالكامل 28 ألف كلمة، أو 56 كيلوبايت بالمصطلحات الحديثة.
يحجز المعالج عناوين ذاكرة منخفضة لمتجهات ثنائية الكلمات، تُحدد عداد البرنامج وكلمة حالة المعالج لبدء روتين خدمة. عندما يُقاطع جهاز إدخال/إخراج برنامجًا، فإنه يضع عنوان متجهه على ناقل البيانات لتحديد روتين الخدمة الذي يجب أن يتولى التحكم. تُستخدم المتجهات الأدنى في روتينات الخدمة لمعالجة أنواع مختلفة من الأخطاء. تحدث هذه الأخطاء عند بعض أخطاء البرنامج، مثل محاولة تنفيذ تعليمة غير مُعرَّفة؛ وأيضًا عندما يُنفذ البرنامج تعليمة مثل BPT أو EMT أو IOT أو TRAP لطلب خدمة من نظام التشغيل.
توسيع الذاكرة
بحلول عام 1975، أصبحت مساحة العناوين المنطقية ذات الـ 16 بت في جهاز PDP-11 عائقًا متزايدًا. [ 4 ] وقد استُخدمت تقنيات مختلفة للتغلب على هذا العائق:
- تتضمن معالجات PDP-11 من الطرازات الأحدث إدارة للذاكرة تدعم العنونة الافتراضية . تم توسيع مساحة العناوين الفيزيائية إلى 18 أو 22 بت، مما يسمح باستخدام ذاكرة وصول عشوائي (RAM) تصل إلى 256 كيلوبايت أو 4 ميجابايت. أما مساحة العناوين المنطقية (أي مساحة العناوين المتاحة في أي لحظة دون تغيير جدول تعيين الذاكرة) فتبقى محدودة بـ 16 بت.
- يمكن ضبط بعض الطرازات، بدءًا من PDP-11/45، لاستخدام 32 كيلوبايت (64 كيلوبايت) كمساحة لتعليمات البرنامج، و32 كيلوبايت أخرى كمساحة للبيانات. وتعتمد بعض أنظمة التشغيل - ولا سيما يونكس منذ الإصدار V7، وRSX11-M+ - على هذه الميزة.
- يمكن لتقنيات البرمجة، مثل تراكب كتلة من التعليمات أو البيانات المخزنة مع كتلة أخرى حسب الحاجة، إخفاء مشكلات الترحيل عن مبرمج التطبيق. على سبيل المثال، يُنتج مُترجم Modula-2 شيفرةً يقوم نظام التشغيل بموجبها بتبديل صفحات بحجم 8 كيلوبايت إلى الذاكرة عند حصول الإجراءات الفردية على التحكم. [ 5 ]
أنماط العنونة
تخصص معظم التعليمات ستة بتات لتحديد المعامل. ثلاثة بتات تحدد أحد أوضاع العنونة الثمانية، وثلاثة بتات تحدد سجلًا عامًا.
يكون ترميز وضع عنونة المعاملات ذي الست بتات كما يلي:
| 5 | 3 | 2 | 0 | ||
| وضع | يسجل | ||||
في الأقسام التالية، يتضمن كل عنصر مثالاً لكيفية كتابة المعامل بلغة التجميع. Rn تعني أحد السجلات الثمانية، المكتوبة من R0 إلى R7.
أنماط عنونة السجلات العامة
يمكن تطبيق الأوضاع الثمانية التالية على أي سجل عام. وسيتم توضيح تأثيراتها عند تطبيقها على R6 (مؤشر المكدس، SP) وR7 (عداد البرنامج، PC) بشكل منفصل في الأقسام التالية.
| شفرة | اسم | مثال | وصف |
|---|---|---|---|
| تشغيل | يسجل | ممرضة مسجلة | المعامل موجود في Rn |
| 1ن | تم تأجيل التسجيل | (Rn) | يحتوي Rn على عنوان المعامل |
| 2ن | الزيادة التلقائية | (Rn)+ | إذا كان Rn يحتوي على عنوان المعامل، فقم بزيادة Rn |
| 3ن | الزيادة التلقائية المؤجلة | @(Rn)+ | إذا كان Rn يحتوي على عنوان المعامل، فقم بزيادة Rn بمقدار 2 |
| 4ن | التناقص التلقائي | −(Rn) | قم بإنقاص قيمة Rn، ثم استخدم النتيجة كعنوان للمعامل. |
| 5ن | تأجيل الإنقاص التلقائي | @−(Rn) | قم بإنقاص قيمة Rn بمقدار 2، ثم استخدم النتيجة كعنوان لعنوان المعامل |
| 6ن | فِهرِس | X(Rn) | Rn+X هو عنوان المعامل |
| 7ن | تم تأجيل الفهرس | @X(Rn) | Rn+X هو عنوان عنوان المعامل |
في نمطي الفهرسة والفهرسة المؤجلة، تكون X قيمةً مكونةً من 16 بت مأخوذةً من الكلمة الثانية للتعليمات. في التعليمات ذات المعاملين، يمكن استخدام هذين النمطين مع كلا المعاملين. تتكون هذه التعليمات من ثلاث كلمات.
تتم عمليات الزيادة التلقائية والنقصان التلقائي على السجل بمقدار 1 في تعليمات البايت، وبمقدار 2 في تعليمات الكلمة، وبمقدار 2 كلما تم استخدام الوضع المؤجل، لأن الكمية التي يعنونها السجل هي مؤشر (كلمة).
أنماط عنونة عداد البرنامج
عند تحديد R7 (عداد البرنامج)، فإن أربعة من أوضاع العنونة تُنتج بشكل طبيعي تأثيرات مفيدة:
| شفرة | اسم | مثال | وصف |
|---|---|---|---|
| 27 | مباشر | فاني | المعامل هو الكلمة التالية في التعليمات |
| 37 | مطلق | @#a | عنوان المعامل هو الكلمة التالية في التعليمات |
| 67 | نسبي | أ | عنوان المعامل هو الكلمة التالية من التعليمات المضافة إلى عداد البرنامج (PC). |
| 77 | مؤجل نسبي | @a | عنوان عنوان المعامل هو الكلمة التالية من التعليمات المضافة إلى عداد البرنامج (PC). |
الاستخدام الشائع الوحيد للوضع المطلق، الذي يجمع تركيبه بين الوضع الفوري والوضع المؤجل، هو تحديد سجلات الإدخال/الإخراج، حيث أن سجلات كل جهاز لها عناوين ذاكرة محددة. أما الوضع النسبي، فيتميز بتركيب أبسط، وهو أكثر شيوعًا للإشارة إلى متغيرات البرنامج ووجهات الانتقال. البرنامج الذي يستخدم الوضع النسبي (والوضع النسبي المؤجل) حصريًا للمراجع الداخلية يكون مستقلًا عن الموقع ؛ فهو لا يفترض أي شيء عن موقعه، لذا يمكن تحميله في أي موقع ذاكرة، أو حتى نقله، دون الحاجة إلى تعديل عناوينه لتعكس موقعه ( إعادة التموضع ). عند حساب هذه العناوين نسبةً إلى الموقع الحالي، يقوم المعالج بإعادة التموضع أثناء التنفيذ.
الوضعان الفوري والمطلق هما ببساطة وضعا الزيادة التلقائية والزيادة التلقائية المؤجلة، على التوالي، المطبقان على عداد البرنامج (PC). عندما تكون الكلمة المساعدة "ضمن التعليمات" كما هو موضح في الجدول أعلاه، يتم زيادة عداد البرنامج للتعليمات التالية تلقائيًا بعد الكلمة المساعدة. وبما أن عداد البرنامج يشير دائمًا إلى الكلمات، فإن عملية الزيادة التلقائية تكون دائمًا بمقدار 2.
أنماط عنونة المكدس
يُستخدم المسجل R6، أو SP، كمكدس مادي للمقاطعات والتدخلات. ومن المتعارف عليه في مجموعة الأوضاع التي يوفرها معالج PDP-11 أن المكدس ينمو تنازليًا - باتجاه العناوين الأدنى - عند إضافة عناصر إليه. عند تطبيق وضع معين على SP، أو على أي مسجل يختاره المبرمج لاستخدامه كمكدس برمجي، فإن أوضاع العنونة تُحدث التأثيرات التالية:
| شفرة | اسم | مثال | وصف |
|---|---|---|---|
| 16 | مؤجل | (SP) | يوجد المعامل في أعلى المكدس |
| 26 | الزيادة التلقائية | (SP)+ | يكون المعامل في أعلى المكدس، ثم قم بإزالته. |
| 36 | الزيادة التلقائية المؤجلة | @(SP)+ | يوجد مؤشر إلى المعامل في أعلى المكدس؛ قم بإزالة المؤشر منه. |
| 46 | التناقص التلقائي | −(SP) | أضف قيمة إلى المكدس |
| 66 | مفهرس | X(SP) | يقع المعامل على مسافة X من أعلى المكدس |
| 76 | مؤجل مفهرس | @X(SP) | يوجد مؤشر إلى المعامل على بُعد X من أعلى المكدس |
على الرغم من أن مكدسات البرامج قد تحتوي على بايتات، إلا أن SP عبارة عن مكدس من الكلمات. عمليات الزيادة والنقصان التلقائي على SP تتم دائمًا بمقدار 2.
مجموعة التعليمات
يعمل جهاز PDP-11 على البايتات والكلمات. تُحدد البايتات برقم سجل - يُحدد البايت الأدنى في السجل - أو بموقع في الذاكرة. تُحدد الكلمات برقم سجل أو بموقع البايت الأدنى في الذاكرة، والذي يجب أن يكون موقعًا زوجيًا. في معظم التعليمات التي تأخذ معاملات، تُضبط البتة 15 لتحديد عنونة البايت، أو تُمسح لتحديد عنونة الكلمة. في القوائم الواردة في القسمين التاليين، أضاف مبرمج لغة التجميع الحرف B إلى رمز التعليمات لتحديد عملية بايت؛ على سبيل المثال، أصبحت MOV هي MOVB.
لم يتم تنفيذ بعض التعليمات، على سبيل المثال MARK و SOB، على بعض طرازات PDP-11.
تعليمات المعامل المزدوج
تُحدد البتات الأربع العليا العملية المراد تنفيذها (حيث تُحدد البتة 15 عادةً ما إذا كان العنونة كلمة أم بايت). وتُحدد مجموعتان من ست بتات نمط عنونة معامل المصدر ونمط عنونة معامل الوجهة، كما هو مُعرّف أعلاه. وتشغل هذه المجموعة من التعليمات 75% من رموز العمليات المتاحة.
| 15 | 12 | 11 | 9 | 8 | 6 | 5 | 3 | 2 | 0 | ||||||
| رمز العملية | المصدر | يسجل | الوجهة | يسجل | |||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| 01 | فيديو | يتحرك:Dest ← Src(MOVB لتسجيل الإشارة - يمتد إلى البتات من 8 إلى 15) |
| 11 | MOVB | |
| 02 | CMP | يقارن:Src − Dest |
| 12 | CMBP | |
| 03 | قليل | اختبار البتات:Src ∧ Dest |
| 13 | BITB | |
| 04 | BIC | واضح قليلاً:Dest ← Dest ∧ (-1 - Src) |
| 14 | BICB | |
| 05 | مكتب المعايير والمقاييس | مجموعة البتات:Dest ← Dest ∨ Src |
| 15 | BISB | |
| 06 | يضيف | يضيف:Dest ← Dest + Src |
| 16 | فرعي | طرح:Dest ← Dest − Src |
تستخدم تعليمات الجمع والطرح عنونة الكلمات، وليس لها اختلافات موجهة نحو البايت.
بسبب قيود التشفير، تستخدم بعض التعليمات ذات المعاملين معامل وضع العنونة ومعامل السجل:
| 15 | 9 | 8 | 6 | 5 | 3 | 2 | 0 | ||||||||
| رمز العملية | سجل | المصدر/الوجهة | يسجل | ||||||||||||
عند استخدام زوج من المسجلات (يُكتب أدناه "(Reg, Reg+1)")، يحتوي المسجل الأول على الجزء الأعلى من المعامل ويجب أن يكون رقمه زوجيًا. أما المسجل التالي ذو الرقم الأعلى فيحتوي على الجزء الأدنى من المعامل (أو الباقي). ويُستثنى من ذلك تعليمة الضرب؛ إذ قد يكون Reg فرديًا، ولكن في هذه الحالة، لا تُخزَّن أعلى 16 بت من النتيجة.
| رمز العملية | ذاكري | عملية |
|---|---|---|
| 070 | متعدد الجنسيات | الضرب الموقّع:(Reg, Reg+1) ← Reg × Src |
| 071 | DIV | القسمة الموقعة:Compute (Reg, Reg+1) ÷ Src; Reg ← quotient; Reg+1 ← remainder |
| 072 | رماد | الإزاحة الحسابية:if Src<5:0> < 0 then Reg ← Shift-right(Reg, -Src<5:0>) else Reg ← Shift-left(Reg, Src<5:0>) |
| 073 | ASHC | الإزاحة الحسابية المدمجة (32 بت):if Src<5:0> < 0 then (Reg, Reg+1) ← Shift-right((Reg, Reg+1), -Src<5:0>) else (Reg, Reg+1) ← Shift-left((Reg, Reg+1), Src<5:0>) |
| 074 | XOR | حصري أو:Dest ← Dest ⊻ Reg |
تعليمات ذات معامل واحد
تحدد البتات العشر العليا العملية المراد تنفيذها، حيث تحدد البتة 15 عادةً ما إذا كان العنونة تتم على مستوى البايت أم الكلمة. وتحدد مجموعة واحدة من ست بتات المعامل كما هو موضح أعلاه.
| 15 | 6 | 5 | 3 | 2 | 0 | ||||||||||
| رمز العملية | المصدر/الوجهة | يسجل | |||||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| ٠٠٠١ | JMP | القفز:PC ← ea(Src) |
| ٠٠٠٣ | مسحة | تبديل بايتات الكلمة: |
| ٠٠٥٠ | CLR | واضح:Dest ← 0 |
| 1050 | مجلس مراجعة البناء | |
| 0051 | كوم | إطراء:Dest ← -1 - Dest |
| 1051 | مشط | |
| ٠٠٥٢ | شركة | زيادة:Dest ← Dest + 1 |
| 1052 | الرقابة الدولية على الرقابة | |
| 0053 | ديسمبر | انخفاض:Dest ← Dest − 1 |
| 1053 | مجلس التعليم العالي | |
| 0054 | سلبي | نفي:Dest ← 0 - Dest |
| 1054 | NEGB | |
| 0055 | محول تناظري رقمي | أضف حملاً:Dest ← Dest + C flag |
| 1055 | بنك أبوظبي التجاري | |
| 0056 | SBC | اطرح الحمل:Dest ← Dest - C flag |
| 1056 | SBCB | |
| 0057 | TST | امتحان:Src ∧ Src |
| 1057 | TSTB | |
| ٠٠٦٠ | معدل العائد على الاستثمار | أدر إلى اليمين:C ← S0; S0-14 ← S1-15; S15 ← C |
| 1060 | رورب | قم بتدوير البايت إلى اليمين:C ← S0; S0-6 ← S1-7; S7 ← C |
| 0061 | دور | أدر إلى اليسار:C ← S15; S1-15 ← S0-14; S0 ← C |
| 1061 | رولب | تدوير البايت الأيسر:C ← S7; S1-7 ← S0-6; S0 ← C |
| ٠٠٦٢ | التعرف التلقائي على الكلام | الإزاحة الحسابية إلى اليمين:Dest ← Dest ÷ 2 |
| 1062 | مجلس تسجيل الجمعيات الأمريكية (ASRB) | |
| 0063 | لغة الإشارة الأمريكية | الإزاحة الحسابية إلى اليسار:Dest ← Dest x 2 |
| 1063 | ASLB | |
| 1064 | MTPS | الانتقال إلى قسم الرعاية الشخصية:PSW ← Src |
| 0065 | MFPI | انتقل من المساحة السابقة (I):−(SP) ← Src |
| 1065 | MFPD | الانتقال من المساحة D السابقة:−(SP) ← Src |
| 0066 | MTPI | انتقل إلى مساحة الحرف I السابقة:Dest ← (SP)+ |
| 1066 | MTPD | انتقل إلى المساحة D السابقة:Dest ← (SP)+ |
| 0067 | SXT | تمديد التوقيع:if N flag = 0 then Dest ← 0 else Dest ← -1 |
| 1067 | MFPS | الانتقال من PSW:Dest ← PSW |
تعليمات التفرع
في معظم تعليمات التفرع، يعتمد تنفيذ التفرع على حالة رموز الحالة. عادةً ما تسبق تعليمة التفرع تعليمة CMP (مقارنة) أو BIT (اختبار بت) ذات معاملين، أو تعليمة TST (اختبار) ذات معامل واحد. كما تُحدد تعليمات الحساب والمنطق رموز الحالة. على عكس معالجات إنتل في بنية x86 ، تُحدد تعليمات MOV هذه الرموز أيضًا، لذا يمكن استخدام تعليمة التفرع للتفرع بناءً على ما إذا كانت القيمة المنقولة صفرًا أم سالبة.
يُحدد البايت الأعلى في التعليمات العملية. تمثل البتات من 9 إلى 15 رمز العملية، بينما يمثل البت 8 قيمة حساب رمز الشرط الذي يؤدي إلى تنفيذ التفرع. أما البايت الأدنى فهو عبارة عن إزاحة بكلمة مُوقّعة بالنسبة إلى الموقع الحالي لعداد البرنامج. وهذا يسمح بتنفيذ التفرعات الأمامية والعكسية في التعليمات البرمجية.
| 15 | 9 | 8 | 7 | 0 | |||||||||||
| رمز العملية | ج | إزاحة | |||||||||||||
| رمز العملية | ج | ذاكري | الحالة أو التشغيل |
|---|---|---|---|
| ٠٠٠ | 1 | BR | الفرع دائماًPC ← PC + 2 × Sign-extend(Offset) |
| 001 | 0 | بري | قم بالتفرع إذا لم يكن متساوياًZ = 0 |
| 001 | 1 | BEQ | تفرع إذا كان متساوياًZ = 1 |
| 002 | 0 | بي جي إي | قم بالتفرع إذا كان أكبر من أو يساوي(N ⊻ V) = 0 |
| 002 | 1 | بي إل تي | قم بالتفرع إذا كان أقل من(N ⊻ V) = 1 |
| 003 | 0 | برنامج المواهب البريطانية (BGT) | قم بالتفرع إذا كان أكبر من(Z ∨ (N ⊻ V)) = 0 |
| 003 | 1 | بلوتوث | قم بالتفرع إذا كان أقل من أو يساوي(Z ∨ (N ⊻ V)) = 1 |
| 100 | 0 | BPL | افصل إذا كان زائدN = 0 |
| 100 | 1 | مؤشر كتلة الجسم | تفرع إذا كان سالبN = 1 |
| 101 | 0 | BHI | قم بالتفرع إذا كان أعلى(C ∨ Z) = 0 |
| 101 | 1 | بلوس | قم بالتفرع إذا كان الفرع أقل أو متماثلاً(C ∨ Z) = 1 |
| 102 | 0 | بي في سي | قم بفصل الفرع إذا كان التدفق زائداًV = 0 |
| 102 | 1 | بي في إس | قم بالتفرع إذا تم تعيين تجاوز السعةV = 1 |
| 103 | 0 | BCC أو BHIS | تفرع إذا كان الممر خالياً، أو تفرع إذا كان أعلى أو مساوياًC = 0 |
| 103 | 1 | BCS أو BLO | تفرع إذا تم وضع مجموعة حمل، أو تفرع إذا كان أقلC = 1 |
بسبب النطاق المحدود لتعليمات التفرع، مع ازدياد حجم البرنامج، تصبح عناوين الوجهة لبعض التفرعات غير قابلة للوصول. لذا، يقوم المبرمج بتغيير تعليمة BR المكونة من كلمة واحدة إلى تعليمة JMP المكونة من كلمتين من المجموعة التالية. ولأن JMP لا تحتوي على صيغ شرطية، يقوم المبرمج بتغيير BEQ إلى BNE التي تتفرع حول JMP.
تُعدّ تعليمة SOB (طرح واحد والتفرع) تعليمة تفرع شرطية أخرى. يتم إنقاص قيمة السجل المحدد بمقدار 1، وإذا لم تكن النتيجة صفرًا، يتم اتخاذ تفرع عكسي بناءً على إزاحة الكلمة المكونة من 6 بتات.
| 15 | 9 | 8 | 6 | 5 | 0 | ||||||||||
| رمز العملية | سجل | إزاحة | |||||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| 077 | تنهد | Subtract One and Branch: Reg ← Reg - 1; if Reg ≠ 0 then PC ← PC - 2 × Offset |
تعليمات سابروتين
يستدعي JSR روتينًا فرعيًا. تحدد مجموعة من ستة بتات نمط العنونة. يمكن لتعليمات JSR حفظ أي سجل في المكدس وتحميل هذا السجل بعنوان الإرجاع. البرامج التي لا تحتاج إلى هذه الميزة تحدد PC كسجل، JSR PC, addressويعود الروتين باستخدام RTS PC.
إذا تم استدعاء روتين باستخدام، على سبيل المثال، `R4` JSR R4, address، فسيتم دفع القيمة القديمة لـ R4 إلى أعلى المكدس، وسيتم وضع العنوان الذي يلي JSR مباشرةً (عادةً عنوان الإرجاع) في R4. ومع ذلك، يمكن للروتين الوصول إلى القيم المضمنة في الكود عن طريق تحديد `(R4)+`، أو إلى المؤشرات المضمنة في الكود عن طريق تحديد `@(R4)+`. ينتقل الترقيم التلقائي متجاوزًا هذه البيانات، إلى النقطة التي يستأنف عندها كود المُستدعي. في كلتا الحالتين، يُحدد هذا الروتين RTS R4العودة إلى المُستدعي.
يمكن استخدام الصيغة JSR PC,@(SP)+، التي تتبادل محتويات عداد البرنامج (PC) مع العنصر العلوي من المكدس، لتنفيذ الروتينات الفرعية . بمجرد أن يضع روتين ما عنوان دخول الروتين الفرعي على المكدس، فإن تنفيذه JSR PC,@(SP)+يحفظ عداد البرنامج على المكدس وينتقل إلى الروتين الفرعي. يمكن لكلا الروتينين الفرعيين بعد ذلك استخدام JSR PC,@(SP)+تعليمات إضافية للانتقال إلى الروتين الفرعي الآخر من حيث توقف. يتيح هذا للروتينين تبادل التحكم واستئناف تنفيذ أحدهما من نقطة التبادل السابقة.
| 15 | 9 | 8 | 6 | 5 | 3 | 2 | 0 | ||||||||
| رمز العملية | سجل | المصدر | يسجل | ||||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| 004 | JSR | انتقل إلى الروتين الفرعي:-(SP) ← Reg; Reg ← PC; PC ← Src |
قيمة " PCmoved to" Regهي العنوان الذي يلي تعليمات JSR.
| 15 | 3 | 2 | 0 | ||||||||||||
| رمز العملية | سجل | ||||||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| ٠٠٠٢٠ | RTS | العودة من الروتين الفرعي:PC ← Reg; Reg ← (SP)+ |
| 15 | 6 | 5 | 0 | ||||||||||||
| رمز العملية | nn | ||||||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| 0064 | علامة | العودة من الروتين الفرعي، تجاهل عناصر المكدس:SP ← SP + (2 x nn), PC ← R5, R5 ← (SP)+ |
تُستخدم دالة MARK لحذف المعاملات من المكدس عند الخروج من روتين فرعي. ما يميز MARK هو أنها تُوضع على مكدس الإرجاع بواسطة المُستدعي ليتم تنفيذها لاحقًا مباشرةً على المكدس بواسطة روتين الإرجاع. أولًا، يدفع المُستدعي قيمة R5 إلى المكدس. ثانيًا، يمكن وضع ما يصل إلى 63 كلمة من المعاملات على المكدس. ثم يضيف المُستدعي عدد المعاملات إلى رمز MARK ويدفع النتيجة إلى المكدس. تُنسخ قيمة SP إلى R5. أخيرًا، JSR PC,addressيُنفذ أمر لاستدعاء الروتين الفرعي. بعد تنفيذ رمزه، ينتهي الروتين الفرعي بـ RTS R5. يقوم هذا بتحميل القيمة الموجودة في R5 (التي تشير إلى تعليمة MARK على المكدس) إلى عداد البرنامج (PC) وإخراج عنوان إرجاع المُستدعي إلى R5. تُنفذ تعليمة MARK. تضرب MARK عدد المعاملات في 2، وتضيف الناتج إلى SP، وتحذف المعاملات، ثم تعود إلى المُستدعي بما يُعادل RTS R5. نادراً ما يتم استخدام تعليمة MARK لأن عمليتها المعقدة يمكن استبدالها بعملية ADD إلى SP. [ 6 ]
تعليمات المصيدة
| 15 | 9 | 8 | 7 | 0 | |||||||||||
| رمز العملية | S | رمز العملية | |||||||||||||
| رمز العملية | S | ذاكري | عملية |
|---|---|---|---|
| 104 | 0 | فني طب طوارئ | فخ المحاكي:-(SP) ← PS; -(SP) ← PC; PC ← (30); PS ← (32) |
| 104 | 1 | فخ | فخ عام:-(SP) ← PS; -(SP) ← PC; PC ← (34); PS ← (36) |
| 15 | 0 | ||||||||||||||
| رمز العملية | |||||||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| 000002 | حق الحصول على المعلومات | العودة من المقاطعة:PC ← (SP)+; PS ← (SP)+ |
| 000003 | العلاج الطبيعي | فخ نقطة التوقف:-(SP) ← PS; -(SP) ← PC; PC ← (14); PS ← (16) |
| 000004 | إنترنت الأشياء | مصيدة الإدخال/الإخراج:-(SP) ← PS; -(SP) ← PC; PC ← (20); PS ← (22) |
| 000006 | RTT | العودة من الفخ:PC ← (SP)+; PS ← (SP)+ |
تعيين عناوين متجهات الفخ والاستثناءات
| متجه | حالة |
|---|---|
| ٠٠٠٠٠٠ | (محجوز) |
| 000004 | تعليمات غير قانونية، خطأ في ناقل البيانات، حد المكدس |
| 000010 | تعليمات محجوزة |
| 000014 | تعليمات BPT، مصيدة التتبع |
| 000020 | تعليمات إنترنت الأشياء |
| 000024 | انقطاع التيار الكهربائي |
| 000030 | تعليمات فني الطوارئ الطبية |
| 000034 | تعليمات الفخ |
| ٠٠٠١١٤ | خطأ التكافؤ |
| ٠٠٠٢٤٤ | استثناء الفاصلة العائمة |
| ٠٠٠٢٥٠ | خطأ في إدارة الذاكرة |
تعليمات متنوعة
| 15 | 0 | ||||||||||||||
| رمز العملية | |||||||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| ٠٠٠٠٠٠ | وقف | إيقاف المعالج:Halt execution before next instruction |
| 000001 | انتظر | انتظر المقاطعة:Halt execution before next instruction; Resume execution at next interrupt handler |
| 000005 | إعادة ضبط | إعادة ضبط UNIBUS:Assert INIT on UNIBUS for 10 ms; All other devices reset to power up state |
| ٠٠٠٢٤٠ | برنامج العمل الوطني | لا توجد عملية جراحية:Do nothing |
عمليات رمز الحالة
| 15 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||||||
| رمز العملية | 1 | S | شمال | Z | V | ج | |||||||||
| رمز العملية | S | ذاكري | عملية |
|---|---|---|---|
| ٠٠٠٢ | 0 | Ccc | رموز حالة واضحة:Clear codes according to N, Z, V, C bits |
| ٠٠٠٢ | 1 | Scc | تعيين رموز الحالة:Set codes according to N, Z, V, C bits |
رموز الحالة الأربعة في كلمة حالة المعالج (PSW) هي
- يشير الحرف N إلى قيمة سالبة
- يشير الرمز Z إلى حالة الصفر (المساواة).
- يشير الحرف V إلى حالة تجاوز السعة، و
- يشير الحرف C إلى حالة الحمل.
كانت التعليمات في هذه المجموعة تُعرف باسم "البرمجة الدقيقة" من قِبل شركة ديجيتال: حيث يشير بت واحد في كلمة التعليمات إلى رمز حالة واحد. لم يُحدد المُجمِّع صيغة لتحديد كل تركيبة، ولكن الرموز SCC وCCC تُجمِّع تعليمات تُعيِّن أو تُزيل، على التوالي، جميع رموز الحالة الأربعة.
يمكن اعتبار عدم مسح أو ضبط أي من رموز الحالة (رموز العمليات 000240 و000260 على التوالي) بمثابة تعليمات عدم تنفيذ. في الواقع، يُشار إلى هذه التعليمات اختصارًا بـ NOP، ويُرمز لها بالرمز 000240.
تعليمات غير متسقة
على مدار عمر جهاز PDP-11، ظهرت اختلافات طفيفة في تنفيذ التعليمات ومجموعات أنماط العنونة، مع أنه لم يُعتبر أي تنفيذ صحيحًا. لم تؤثر هذه الاختلافات على الاستخدام العادي لجهاز PDP-11. على سبيل المثال، في التعليمات MOV R5,-(R5)، يختلف ما إذا كان يتم إنقاص قيمة R5 تلقائيًا قبل استخدامها كمصدر بين الطرازات. [ 7 ]
مجموعات التعليمات الاختيارية
مجموعة التعليمات الموسعة (EIS)
يُعد نظام EIS خيارًا متاحًا للمعالجات 11/35/40 و 11/03، وكان يتم توفيره كمعيار قياسي في المعالجات الأحدث.
- تقوم الدالتان MUL و DIV بضرب وقسمة المعامل الصحيح على زوج من السجلات.
- عمليات حسابية مثل ASH و ASHC - تقوم بإزاحة سجل أو زوج من السجلات. بالنسبة للأرقام الموجبة، تتم الإزاحة إلى اليسار، وبالنسبة للأرقام السالبة، تتم الإزاحة إلى اليمين.
مجموعة التعليمات العائمة (FIS)
تُعدّ FIS خيارًا متاحًا لأجهزة PDP-11/35/40 و11/03. تُجرى عمليات الفاصلة العائمة أحادية الدقة على مكدس مُعنون بواسطة مُعامل سجل. تُحدد البتات الـ 13 العليا العملية المراد تنفيذها. ويُحدد حقل من ثلاثة بتات السجل المُستخدم كمؤشر مكدس لمعامل الفاصلة العائمة. كل فاصلة عائمة عبارة عن كلمتين، وتُجري كل تعليمة فاصلة عائمة عملية على فاصلتين عائمتين، مُرجعةً فاصلة عائمة واحدة كنتيجة. يتم زيادة مؤشر المكدس المُختار بمقدار 4 بعد كل عملية.
| 15 | 3 | 2 | 0 | ||||||||||||
| رمز العملية | سجل | ||||||||||||||
| رمز العملية | ذاكري | عملية |
|---|---|---|
| 07500 | موضة | إضافة عائمة:4(Rn) ← 4(Rn) + (Rn), Rn ← Rn + 4 |
| 07501 | FSUB | طرح عائم:4(Rn) ← 4(Rn) - (Rn), Rn ← Rn + 4 |
| 07502 | FMUL | الضرب العائم:4(Rn) ← 4(Rn) × (Rn), Rn ← Rn + 4 |
| 07503 | FDIV | خط تقسيم عائم:4(Rn) ← 4(Rn) ÷ (Rn), Rn ← Rn + 4 |
معالج الفاصلة العائمة (FPP)
كان هذا خيار معالج الفاصلة العائمة الاختياري للطراز 11/45 ومعظم الطرازات اللاحقة.
- عمليات الفاصلة العائمة الكاملة على معاملات أحادية أو مزدوجة الدقة، يتم تحديدها بواسطة بت أحادي/مزدوج في سجل حالة الفاصلة العائمة
- تنسيق بيانات الفاصلة العائمة أحادي الدقة، وهو سلف تنسيق IEEE 754 : بت الإشارة، وأس من 8 بت، وجزء كسري من 23 بت مع بت مخفي 24
مجموعة التعليمات التجارية (CIS)
تُضيف مجموعة التعليمات التجارية، المعروفة باسم CIS أو CIS11، تعليمات السلاسل وتعليمات النظام العشري المشفر ثنائيًا (BCD) المستخدمة في لغتي COBOL و DIBOL . وقد تم تنفيذها بواسطة رمز دقيق اختياري في الإصدار 11/23/24، [ 8 ] [ 9 ] وبواسطة وحدة إضافية في الإصدار 11/44 [ 10 ] وإصدار واحد من الإصدار 11/74.
تُمثَّل السلاسل النصية بعددين صحيحين من 16 بت، يُخزَّنان في أي سجلين من سجلات الأغراض العامة، أو بقيمتين من 16 بت في موقعين متتاليين في الذاكرة. يُرمز لأحدهما بـ "n"، وهو طول السلسلة حتى 64 كيلوبايت، والآخر بـ "A"، وهو مؤشر إلى بداية بيانات الأحرف في الذاكرة. يشير الزوج n/A معًا إلى موقع السلسلة وطولها. [ 11 ] : 195 : 406
عمليات نسخ السلاسل النصية هي MOVEC وMOVTC وMOVRC. تنسخ MOVEC بيانات الأحرف من الذاكرة من الموقع المحدد في زوج n/A إلى الموقع المحدد في زوج n/A آخر، وكلاهما في سجلات، مع سجل ثالث يحتوي على حرف تعبئة في بتاته الثمانية السفلى وأصفار في بتاته الثمانية العليا. تقوم MOVEC بالشيء نفسه ولكن مع تخزين المواقع وحرف التعبئة في مواقع الذاكرة بدلاً من السجلات. في جميع تعليمات النقل، إذا كان المصدر أقصر من الوجهة، تتم إضافة حرف التعبئة إلى الوجهة، وإذا كان المصدر أطول، يتم اقتطاعه. في كلتا الحالتين، تُستخدم علامات حالة المعالج للإشارة إلى ذلك. MOVRC/MOVRC متشابهتان، لكنهما تنسخان عكسيًا لعكس السلسلة الأصلية في الوجهة. [ 11 ] : 409
تستخدم وحدتا MOVTC/MOVTCI جدول بحث بحجم 256 بايت لترجمة الأحرف أثناء النسخ، حيث يُشار إلى بدايته بواسطة سجل آخر في MOVTC أو مؤشر 16 بت في ذاكرة MOVTCI. تستخدم الترجمة قيم أحرف السلسلة المصدر كأرقام فهرس، وتنسخ القيمة الموجودة في جدول الترجمة عند ذلك الفهرس إلى السلسلة الوجهة. يمكن استخدام هذه الطريقة لتحويل EBCDIC إلى ASCII عن طريق وضع رمز حرف ASCII المقابل لرموز EBCDIC المُطابقة في الجدول. الحرف "E" هو الحرف رقم 69 في ASCII ورقم 197 في EBCDIC، لذا لتحويل EBCDIC إلى ASCII، يتم إنشاء جدول بحجم 256 بايت مع وضع الرقم 69 في الموقع 197. عند استدعاء MOVTC ورؤيته للرقم 197 في السلسلة الأصلية، يبحث في الموقع 197 من الجدول، ويجد الرقم 97، ثم يُخرجه في السلسلة الجديدة، مُجريًا بذلك عملية التحويل. [ 11 ] : 456-458
تُعالج مقارنات السلاسل النصية بواسطة وحدة التحكم في حالة المعالج (CMPC)، التي تُحدد رموز حالة المعالج بناءً على نتائج مقارنة سلسلتين نصيتين. تُحدد وحدة LOCC أول ظهور لحرف معين في سلسلة نصية، بينما تبحث وحدة SKPC عن أول حرف غير مطابق، وتُستخدم، على سبيل المثال، لحذف المسافات الفارغة في بداية السلاسل النصية. تُشبه وحدتا SCANC وSPANC وحدتي LOCC وSKPC، لكنهما تُطابقان أي حرف في مجموعة أحرف مُقنّعة. يُمكن استخدام ذلك، على سبيل المثال، للعثور على الظهور التالي لأي حرف فاصل أسطر مثل VT أو LF أو CR. مجموعات الأحرف عبارة عن جدول من 256 بايت، مُقسّم إلى مجموعات فرعية. [ أ ] تُشبه هذه المجموعات جداول الترجمة، حيث تُشكّل البتات الثمانية السفلى من الكلمة الأولى قناعًا، وتُشير الكلمة الثانية إلى بداية الجدول. يُحدد القناع أيًا من المجموعات الفرعية، بحد أقصى ثماني مجموعات، تُشكّل جزءًا من مجموعة الأحرف أثناء المقارنات. باستخدام هذا النظام، يمكن تعريف مجموعات الأحرف مثل الأحرف الكبيرة والصغيرة والأرقام، وما إلى ذلك، ثم دمجها بسهولة عبر القناع، على سبيل المثال، تحديد مجموعات الأحرف الكبيرة والصغيرة لإنتاج المجموعة الكاملة من الأحرف. [ 11 ]
يتضمن نظام CIS أيضًا مجموعة من أنواع البيانات وتعليمات لمعالجة أرقام BCD. تُمثَّل هذه البيانات أيضًا بواسطة سجلين أو موقعين في الذاكرة، كل منهما 16 بت، حيث يكون الرقم الثاني هو A، وهو مطابق لحالة السلسلة النصية. تحتوي الكلمة الأولى الآن على أربعة حقول تصف تمثيل البيانات كسلسلة نصية، بما في ذلك الأرقام المضغوطة وغير المضغوطة، ومعالجة الإشارة، وطول السلسلة من 0 إلى 16 بايت. كان نظام DEC يُشير إلى البيانات غير المضغوطة، التي تحتوي على رقم واحد لكل بايت، باسم "السلاسل الرقمية". باستخدام البيانات المضغوطة، التي تحتوي على رقمين BCD لكل بايت، يمكن لسلسلة نصية من 16 بايت أن تحتوي على أرقام BCD يصل طولها إلى 32 رقمًا. تضمنت التعليمات ADDP/ADDN للبيانات المضغوطة وغير المضغوطة، وSUBP/SUBN، وASHP/ASHN (الإزاحة الحسابية)، وCMPP/CMPN (المقارنة). أما بالنسبة للبيانات المضغوطة فقط، فتتوفر التعليمات MULP وDIVP. يتضمن نظام CIS أيضًا مجموعة من ست تعليمات (CVT) لتحويل أرقام BCD بين التنسيقات المضغوطة وغير المضغوطة، وكذلك من وإلى القيم الثنائية. [ 11 ]
يتم توفير مجموعة أخيرة من التعليمات لتحميل اثنين أو ثلاثة من واصفات السلاسل المكونة من كلمتين إلى السجلات الداخلية، مما يغني عن الحاجة إلى عمليات نقل متعددة. [ 11 ]
الوصول إلى كلمة حالة المعالج (PSW)
يُربط سجل PSW بعنوان الذاكرة 177776، وبالتالي يمكن معالجته كأي بيانات أخرى. الاستثناء الوحيد هو معالج LSI-11 الذي لا يربط سجل PSW بمساحة الذاكرة. توفر التعليمات الموجودة في جميع معالجات PDP-11 باستثناء أقدمها وصولاً مباشراً للبرامج إلى السجل.
- SPL (تحديد مستوى الأولوية)
- MTPS (نقل إلى حالة المعالج)
- MFPS (نقل من حالة المعالج)
الوصول إلى مساحات الذاكرة الأخرى
في معالجات PDP-11 التي توفر مساحات متعددة للتعليمات والبيانات، تتيح مجموعة من تعليمات النقل غير المتعامدة الوصول إلى مساحات أخرى. على سبيل المثال، تستخدم الإجراءات الروتينية في نظام التشغيل التي تعالج استدعاءات الخدمة أثناء التشغيل هذه التعليمات لتبادل المعلومات مع البرنامج المستدعي.
- MTPD (الانتقال إلى مساحة البيانات السابقة)
- MTPI (الانتقال إلى مساحة التعليمات السابقة)
- MFPD (نقل من مساحة البيانات السابقة)
- MFPI (الانتقال من مساحة التعليمات السابقة)
مثال على التعليمات البرمجية
الكود المصدري التالي للغة التجميع PDP-11 هو لروتين فرعي يسمى يقوم بتحويل سلسلة أحرف ASCIIZTOUPPER المنتهية بـ null إلى أحرف كبيرة.
٠٠٠٠٠٠ 000000 010046 000002 010146 000004 016600 000006 000010 112001 000012 001414 000014 120127 000172 000020 003373 000022 120127 000141 000026 002776 000030 142740 000040 000034 000766 000036 012601 000040 012600 000042 000207 | TOUPPER: ; مسح سلسلة ASCII منتهية بـ null، وتحويل ; جميع الأحرف الأبجدية إلى أحرف كبيرة. ; ; معلمات مكدس الإدخال، ; [SP+2] = عنوان السلسلة المستهدفة ; [SP+0] = عنوان الإرجاع ; TOUPPER: MOV R0 , - ( SP ) ; حفظ بعض السجلات MOV R1 , - ( SP ) MOV 6 ( SP ), R0 ; الحصول على عنوان السلسلةحلقة: MOVB ( R0 ) + , R1 ; احصل على حرف BEQ DONE ; إذا كان صفرًا، فقد انتهى الأمر CMPB R1 , #'z ; هل هو بين a و z؟ BGT LOOP ; إذا لم يكن كذلك، فاحصل على الحرف التالي CMPB R1 , #'a BLT LOOP BICB #40,-(R0) ; إذا كان az، فاجعله AZ BR LOOPتم: MOV ( SP ) + , R1 ; استعادة السجلات MOV ( SP ) + , R0 RTS PC ; العودة من البرنامج الفرعي |
يوضح كود المصدر التالي للغة التجميع PDP-11 كيفية استخدام أوضاع عنونة PDP-11 لكتابة نفس الروتين بدون سجلات عامة على الإطلاق.
٠٠٠٠٠٠ 000000 105776 000002 000004 001416 000006 127627 000002 000172 000014 003008 000016 127627 000002 000141 000024 002403 000026 142776 000040 000002 000034 005266 000002 000040 000757 000042 000207 | TOUPPER2: ; مسح سلسلة ASCII منتهية بـ null، وتحويل ; جميع الأحرف الأبجدية إلى أحرف كبيرة. ; ; معلمات مكدس الإدخال، ; [SP+2] = عنوان السلسلة المستهدفة ; [SP+0] = عنوان الإرجاع ; TOUPPER2: TSTB @ 2 ( SP ) ; اختبار الحرف في العنوان على المكدس BEQ DONE ; إذا كان صفرًا، فقد تم الانتهاء CMPB @ 2 ( SP ), #'z ; هل هو بين a و z؟ BGT NEXTC ; إذا لم يكن كذلك، فأشر إلى الحرف التالي CMPB @ 2 ( SP ), #'a BLT NEXTC BICB #40,@2(SP) ; إذا كان az، فاجعله AZ NEXTC: INC 2 ( SP ) ; زيادة عنوان الحرف التالي على المكدس BR TOUPPER2تم: لعبة استراتيجية الوقت الحقيقي على الكمبيوتر الشخصي |
سرعة
تختلف سرعة معالج PDP-11 باختلاف الطراز، وتكوين الذاكرة، ورمز العملية، وأنماط العنونة. تتكون أوقات تنفيذ التعليمات من ثلاثة عناصر: جلب/تنفيذ التعليمات نفسها، ووقت الوصول إلى المصدر والوجهة. يعتمد العنصران الأخيران على نمط العنونة. على سبيل المثال، في جهاز PDP-11/70 (حوالي عام 1975)، كانت مدة جلب/تنفيذ تعليمة من الشكل ADD x (R m ), y (R n ) هي 1.35 ميكروثانية ، بالإضافة إلى وقتي الوصول إلى المصدر والوجهة، كل منهما 0.6 ميكروثانية، ليصبح إجمالي وقت تنفيذ التعليمة 2.55 ميكروثانية. في حال عدم وجود الذاكرة المُعنونة في الذاكرة المخبئية، تُضاف 1.02 ميكروثانية. يمكن تنفيذ تعليمة ADD R m ,R n من الذاكرة المخبئية في 0.3 ميكروثانية. أما العمليات الحسابية ذات الفاصلة العائمة فهي أكثر تعقيدًا، نظرًا لوجود بعض التداخل بين وحدة المعالجة المركزية ومعالج الفاصلة العائمة، ولكن بشكل عام، تكون العمليات الحسابية ذات الفاصلة العائمة أبطأ بكثير. يستغرق تنفيذ تعليمة الجمع العائم أحادية الدقة من 2.4 إلى 5.5 ميكروثانية بالإضافة إلى وقت جلب المعاملات. [ 12 ]
المقاطعات
يعمل جهاز PDP-11 بمستوى أولوية يتراوح من 0 إلى 7، ويتم تحديده بواسطة ثلاث بتات في كلمة حالة المعالج (PSW) . يمكن للطرازات المتطورة العمل في أوضاع متعددة، مثل وضع النواة (المميز)، ووضع المستخدم (التطبيق)، وأحيانًا وضع المشرف، وذلك وفقًا لبتتين في كلمة حالة المعالج (PSW).
لطلب مقاطعة، يقوم جهاز ناقل البيانات بتفعيل أحد خطوط الناقل الأربعة المشتركة، من BR4 إلى BR7، حتى يستجيب المعالج. تشير الأرقام الأعلى إلى أولوية أكبر، فقد تُفقد البيانات أو قد ينفصل قطاع معين عن رؤوس القراءة/الكتابة ما لم يستجب المعالج بسرعة. تُعد جاهزية الطابعة لطباعة حرف آخر هي الأقل أولوية (BR4)، حيث تبقى جاهزة إلى أجل غير مسمى. إذا كان المعالج يعمل عند المستوى 5، فإن BR6 وBR7 هما المطلوبان. إذا كان المعالج يعمل عند المستوى 3 أو أقل، فسيمنح أي مقاطعة؛ أما إذا كان عند المستوى 7، فلن يمنح أي مقاطعة. طلبات ناقل البيانات التي لم تتم الموافقة عليها لا تُفقد، بل تُؤجل فقط؛ ويستمر الجهاز الذي يحتاج إلى الخدمة في إرسال طلبه عبر ناقل البيانات.
عندما يتجاوز أي مقاطعة مستوى أولوية المعالج، يُفعّل المعالج إشارة منح ناقل البيانات المقابلة، من BG4 إلى BG7. خطوط منح ناقل البيانات ليست خطوطًا مشتركة، بل هي سلسلة متصلة : مدخل كل بوابة هو مخرج البوابة السابقة في السلسلة. توجد بوابة على كل جهاز ناقل، والجهاز الأقرب فعليًا إلى المعالج يكون في بداية السلسلة. إذا قدم الجهاز طلبًا، فعند استشعاره إشارة منح ناقل البيانات، يستنتج أنه يتحكم في الناقل، ولا يمرر إشارة المنح إلى الجهاز التالي على الناقل. أما إذا لم يقدم الجهاز طلبًا، فإنه ينشر إشارة منح ناقل البيانات من مدخله إلى مخرجه، مما يتيح للجهاز الأقرب التالي فرصة الرد. (إذا لم تشغل الأجهزة فتحات مجاورة للوحة المعالج، فإن "بطاقات استمرارية المنح" المُدخلة في الفتحات الفارغة تنقل خط منح ناقل البيانات).
بمجرد سيطرة الجهاز على ناقل البيانات، يُلغي طلبه ويضع على الناقل عنوان الذاكرة لمتجه مكون من كلمتين يشير إلى عنوان روتين خدمة المقاطعة، بالإضافة إلى كلمة مرور جديدة (PSW). يحفظ المعالج عداد البرنامج (PC) وكلمة المرور القديمين، ويدخل وضع النواة، ثم يُحمّل القيم الجديدة من المتجه المحدد. بالنسبة لجهاز في BR6، تُحدد كلمة المرور الجديدة في متجهه عادةً 6 كأولوية جديدة للمعالج، لذا سيُلبي المعالج الطلبات الأكثر إلحاحًا (BR7) أثناء روتين الخدمة، ولكنه سيؤجل الطلبات ذات الأولوية نفسها أو الأقل. باستخدام عداد البرنامج الجديد، ينتقل المعالج إلى روتين خدمة الجهاز المُقاطع. يُشغّل هذا الروتين الجهاز، على الأقل لإزالة الحالة التي تسببت في المقاطعة. ينتهي الروتين بتعليمات RTI (العودة من المقاطعة)، التي تُعيد عداد البرنامج وكلمة المرور إلى حالتهما قبل أن يُعطي المعالج المقاطعة مباشرةً.
إذا تم تقديم طلب ناقل ولم يستجب أي جهاز لمنح الناقل، فإن المعالج ينتهي وقته وينفذ عملية اعتراض تشير إلى وجود خلل في الأجهزة.
لغة التجميع MACRO-11

لغة MACRO-11 هي لغة التجميع الخاصة بجهاز PDP-11. وهي خليفة لغة PAL-11 (محمل برنامج التجميع)، وهي إصدار سابق من لغة تجميع PDP-11 يفتقر إلى إمكانيات الماكرو. تدعم جميع أنظمة تشغيل DEC PDP-11 لغة MACRO-11. كما تتضمن أنظمة Unix الخاصة بجهاز PDP-11 مُجمِّعًا (يُسمى " as ")، وهو مشابه هيكليًا للغة MACRO-11، ولكنه يختلف عنها في بناء الجملة ويحتوي على عدد أقل من الميزات.
انظر أيضاً
- WD16 ، امتداد لمجموعة تعليمات PDP-11
ملحوظات
- ↑ إن قناع البايت الواحد يعني وجود ثماني مجموعات فرعية من 32 حرفًا لكل منها، ولكن هذا غير مذكور بوضوح في الوثائق.
مراجع
- ↑ دليل معالج pdp11، pdp11/04/34a/44/60/70 (ملف PDF) . ديسمبر 1979. تم الاطلاع عليه بتاريخ 20 يوليو 2025 .
- ↑ "الفصل 7". دليل المعالج pdp11/05/10/35/40 (PDF) . ديسمبر 1973.
- ↑ دليل معالج pdp11 pdp11/04/34a/44/60/70 (PDF) . ديسمبر 1979. صفحة 421.
- ↑ بيل، جوردون ؛ ستريكر، دبليو دي. ما تعلمناه من جهاز PDP-11 - ما تعلمناه من جهازي VAX و Alpha (ملف PDF) (تقرير) . تم الاطلاع عليه بتاريخ 26-06-2025 .
- ↑ دوتزل، غونتر (1986). "حول LSI-11، RT-11، ميغابايت من الذاكرة و Modula-2/VRS" (PDF) .
- ↑ "دليل معالج PDP11/40" . شركة ديجيتال إكويبمنت . تم الاطلاع عليه بتاريخ 16 يوليو 2024 .
- ↑ "تناقضات مجموعة تعليمات PDP-11" . stackexchange.com . تم الاطلاع عليه بتاريخ 19-10-2025 .يستشهد بدليل هندسة PDP-11، 1983، الملحق ب، "اختلافات عائلة PDP-11".
- ↑ دليل مستخدم وحدة المعالجة المركزية KDF11-BA (ملف PDF) . ديسمبر. يناير 1982. ص 1 - 8.
- ↑ دليل النظام الفني PDP-11/24 (PDF) . ديسمبر - يونيو 1981. ص 4 - 3. EK-11024-TM-001.
- ↑ دليل مستخدم KE44-ACISP (ملف PDF) . ديسمبر 1981. EK-KE44A-UG-002.
- 1 2 3 4 5 6 دليل معالج pdp11 pdp11/04/34a/44/60/70 (PDF) . ديسمبر 1979.
- ↑ دليل معالج DEC PDP-11/70، 1975، الملحق ج، توقيت التعليمات.
للمزيد من القراءة
- إيكهاوس الابن، ريتشارد هـ.؛ موريس، ل. روبرت (1979). تنظيم أنظمة الحواسيب الصغيرة وبرمجتها وتطبيقاتها (PDP-11) . إنجلوود كليفس، نيو جيرسي : برنتيس هول . ISBN 0-13-583914-9.
- سينغر، مايكل (1980). PDP-11. برمجة لغة التجميع وتنظيم الآلة . نيويورك: جون وايلي وأولاده. ISBN 9780471049050.
- دليل معالج pdp11 - pdp11/05/10/35/40 (PDF) . شركة ديجيتال إكويبمنت. 1973.
- دليل معالج pdp11 - pdp11/04/34a/44/60/70 (ملف PDF) . شركة ديجيتال إكويبمنت. 1979.
روابط خارجية
- دليل معالج PDP-11 ( طبعة غوردون بيل لعام 1969 ، طبعة 1979 على موقع bitsavers )
- الحفاظ على سلسلة أجهزة الكمبيوتر المصغرة PDP-11 ذات 16 بت
- ورقة بحثية لجوردون بيل وبيل ستريكر عام 1975 بعنوان: ما تعلمناه من جهاز PDP-11
- Ersatz-11 ، محاكي PDP-11
- يمكنكم الاطلاع على المزيد من الأوراق والروابط على موقع غوردون بيل .
- كرة الفرو
- PDP-11
- بنى مجموعات التعليمات
- مقدمات متعلقة بالحاسوب في عام 1970
