لغة التجميع IBM Basic وما خلفها

لغة التجميع IBM Basic وما خلفها هي سلسلة من لغات التجميع والمجمعات المصممة لنظام IBM System/360 الرئيسي وما خلفه من خلال IBM Z.

أولى هذه اللغات، وهي لغة التجميع الأساسية ( BAL )، لغة تجميع محدودة للغاية ، طُرحت عام 1964 واستُخدمت في أنظمة 360 المصغرة التي لا تتجاوز  ذاكرتها الرئيسية 8 كيلوبايت، وتضم قارئ بطاقات ، ومثقب بطاقات ، وطابعة للإدخال والإخراج ، وذلك كجزء من دعم البرمجة الأساسية من IBM (BPS/360). كما كان مُجمِّع اللغة الأساسية متاحًا أيضًا كجزء من نظام التشغيل الأساسي 360 (BOS/360).

لاحقًا، ظهرت لغة تجميع لنظام System/360 تتميز بميزات أكثر قوة وسهولة في الاستخدام، مثل دعم وحدات الماكرو . استمرت هذه اللغة، ومجموعة برامج التجميع التي تُنفذها، في التطور لنظام System/370 والأنظمة المعمارية اللاحقة، حيث ورثت ووسّعت بنيتها النحوية. لا يزال البعض في صناعة الحواسيب يُشير إليها بالمصطلح القديم "لغة التجميع الأساسية" أو "BAL". [ 1 ] مع ذلك، لم يعد الكثيرون يُشيرون إليها، بل كانت شركة IBM نفسها تُشير إليها عادةً باسم "لغة تجميع System/360"، [ 2 ] أو "برنامج التجميع" لنظام تشغيل أو منصة معينة، [ 3 ] أو بأسماء مشابهة. عُرفت برامج تجميع مُحددة بأسماء مثل [ أ ] برنامج التجميع E، وبرنامج التجميع F، وبرنامج التجميع H، وهكذا. يُشير المبرمجون الذين يستخدمون هذه اللغة، وهذه المجموعة من برامج التجميع، إليها أيضًا باسم ALC (اختصارًا لـ Assembly Language Coding)، أو ببساطة "برنامج التجميع".

تُعرف أحدث لغة مشتقة باسم IBM High-Level Assembler ( HLASM ).

الخصائص العامة

باعتبارها لغة تجميع ، تستخدم BAL مجموعة التعليمات الأصلية لبنية IBM الرئيسية التي تعمل عليها، System/360 ، تمامًا كما تستخدم خلفاء BAL مجموعات التعليمات الأصلية لبنى IBM الرئيسية التي تعمل عليها، بما في ذلك System/360 و System/370 و System/370-XA و ESA/370 و ESA/390 و z/Architecture .

إن بساطة معظم تعليمات الآلة تعني أن شفرة المصدر لبرنامج مكتوب بلغة التجميع عادةً ما تكون أطول بكثير من برنامج مكافئ مكتوب بلغة أخرى، مثل كوبول أو فورتران . في الماضي، كان يُعتقد أن سرعة برامج التجميع المكتوبة يدويًا تعوض هذا العيب، ولكن مع ظهور المترجمات المُحسِّنة، ولغة سي للحواسيب المركزية، وغيرها من التطورات، فقدت لغة التجميع الكثير من جاذبيتها. ومع ذلك، تواصل شركة IBM تطوير لغة التجميع، ولا تزال تُستخدم عندما تكون الحاجة إلى السرعة أو التحكم الدقيق للغاية أمرًا بالغ الأهمية. إلا أن جميع برامج IBM التي خلفت BAL قد تضمنت ميزة ماكرو متطورة تسمح بكتابة شفرة مصدر أكثر إيجازًا.

سبب آخر لاستخدام لغة التجميع هو عدم إمكانية الوصول إلى جميع وظائف نظام التشغيل باستخدام لغات البرمجة عالية المستوى. تُعرَّف واجهات برمجة التطبيقات لأنظمة تشغيل الحواسيب المركزية من IBM على أنها مجموعة من تعليمات الماكرو في لغة التجميع، والتي عادةً ما تستدعي تعليمة استدعاء المشرف ( ) في أنظمة مثل z/OS، أو تعليمة التشخيص ( ) في أنظمة مثل z/VM. ويمكن استخدام خدمات نظام التشغيل من برامج مكتوبة بلغات برمجة عالية المستوى باستخدام إجراءات فرعية في لغة التجميع.SVC

صيغة بيان المُجمِّع

استخدم بعض المبرمجين نموذج ترميز لغة التجميع للغات التجميع الخاصة بجهاز IBM 360 واللغات التي تلتها.
كانت بطاقات تثقيب المفاتيح وقائمة التجميع المطبوعة شائعة الاستخدام خلال استخدام لغة التجميع في جهاز IBM 370 في سبعينيات القرن العشرين.

يعكس تنسيق عبارات لغة التجميع تخطيط بطاقة مثقبة مكونة من 80 عمودًا ، على الرغم من أن الإصدارات اللاحقة قد خففت معظم القيود.

  • يُعدّ اسم أو تسمية البيان الاختياري سلسلة من الأحرف والأرقام تبدأ من العمود الأول. يجب أن يكون الحرف الأول حرفًا أبجديًا. أضافت الإصدارات اللاحقة الرموز @ و# و$ و_ إلى الأحرف المسموح بها في التسميات، وزادت طولها من ستة أحرف في البداية إلى ثمانية، ثم إلى أطوال غير محدودة تقريبًا.
  • يمكن أن يبدأ رمز العملية أو "الاختصار" في أي عمود على يمين العمود 1، مفصولًا عن تسمية العبارة بمسافة. كان رمز العملية عبارة عن تعليمات آلية فقط (لم تكن وحدات الماكرو متاحة)، لذا كان يتكون عادةً من حرف أو حرفين أو ثلاثة أحرف، ونادرًا أربعة أحرف. تم تحسين رمز العملية ليسمح بما يصل إلى ثمانية أحرف، ثم لاحقًا بأطوال غير محدودة فعليًا.
  • يمكن أن يبدأ حقل المعامل في أي عمود على يمين رمز العملية، ويفصله عن رمز العملية مسافة فارغة واحدة على الأقل. المسافات الفارغة غير صالحة في المعاملات باستثناء الثوابت النصية. حقل المعامل، الذي يتكون من معامل واحد أو أكثر، اختياري حسب رمز العملية.
  • يمكن أن تظهر التعليقات الاختيارية على يمين حقل المعامل، مفصولة بمسافة فارغة واحدة على الأقل.
  • لا تسمح لغة التجميع الأساسية بتكملة التعليمات. تشير الإصدارات الأحدث من المُجمِّع إلى التكملة بظهور أي حرف غير فارغ في العمود 72 من التعليمات المراد استكمالها. تتطلب لغة التجميع الأساسية أن يكون العمود 72 فارغًا.
  • يُشار إلى "التعليق الكامل" بعلامة النجمة (*) في العمود 1.
  • يمكن للمبرمج استخدام أعمدة البطاقات من 73 إلى 80، والتي تسمى حقل تسلسل التعريف، لأي غرض، ولكنها عادة ما تحتوي على أرقام تسلسل لإعادة ترتيب مجموعة البطاقات المختلطة.

تسمح لغة التجميع الأساسية أيضًا بتنسيق عبارة بديل حيث تبدأ العبارة في العمود 25، مما يسمح بثقب التعليمات المجمعة في نفس البطاقة بدءًا من العمود 1. لم يتم الاستمرار في هذا الخيار في الإصدارات اللاحقة من المجمع.

أنواع التعليمات

توجد ثلاثة أنواع رئيسية من التعليمات في الكود المصدري لبرنامج مكتوب بلغة التجميع.

تعليمات التجميع

تعليمات المُجمِّع، والتي تُسمى أحيانًا بالتوجيهات أو العمليات الزائفة أو pseudoops في أنظمة أخرى، هي طلبات تُوجَّه إلى المُجمِّع لتنفيذ عمليات مُختلفة أثناء عملية توليد الكود. على سبيل المثال، CSECTتعني "ابدأ قسمًا من الكود هنا"؛ DSECTوتُوفِّر تعريفات بيانات لبنية، ولكنها لا تُولِّد أي كود؛ DCوتُعرِّف ثابتًا ليتم وضعه في كود الكائن .

إحدى أهم تعليمات المُجمِّع هي `_ USING...

 باستخدام القاعدة، السجل 1، ...، السجل ن 

تُحدد عناوين تعليمات الآلة في S/360 إزاحة (من 0 إلى 4095 بايت) من القيمة الموجودة في سجل الأساس ؛ وبينما أضافت الإصدارات اللاحقة من البنية تنسيقات عناوين نسبية، لا تزال التنسيقات القديمة مستخدمة في العديد من التعليمات. USINGيسمح هذا للمبرمج بإخبار المُجمِّع بأن سجلات الأساس المُحددة يُفترض أنها تحتوي على عنوان "base"، أو base+4096 (في حال تحديد عدة سجلات)، وهكذا. يوفر هذا اختصارًا للمبرمج، الذي كان سيضطر لولا ذلك إلى تحديد سجل الأساس في كل تعليمة. يبقى المبرمجون مسؤولين عن تحميل عنوان "base" فعليًا في السجل قبل كتابة أي كود يعتمد على هذه القيمة.

تقوم تعليمات التجميع ذات الصلة DROPبإلغاء تعليمة سابقة USING.

تعليمات الآلة (طريقة تذكيرية)

توجد علاقة مباشرة بين التعليمات البرمجية وتعليمات الآلة . يُشرح دليل مبادئ التشغيل [ 4 ] الخاص بكل مجموعة تعليمات بالتفصيل. أمثلة: [ e ]

* هذا سطر تعليق L 3,ZIGGY قم بتحميل العدد الصحيح الكامل المخزن في الموقع المسمى 'ZIGGY' إلى السجل العام 3: SLA 4,5 إزاحة القيمة في السجل العام 4 إلى اليسار بمقدار 5 بتات MVC TARGET,SOURCE نقل الأحرف من الموقع 'SOURCE' إلى 'TARGET' AP COUNT,=P'1' أضف 1 إلى القيمة الموجودة في موقع الذاكرة 'COUNT' (تنسيق عشري مضغوط) B NEXT فرع غير مشروط إلى التسمية 'NEXT' هنا متساوٍ * هذه علامة CLC TARGET,=C'ADDRESS' قارن موقع الذاكرة 'TARGET' بالسلسلة 'ADDRESS' قم بتفعيل الفرع "BE THERE" إذا كان مساوياً لتسمية البرنامج "THERE". 

تتضمن المعايير المقبولة عمومًا، وإن لم تكن إلزامية، تعريف سجلات الأغراض العامة برموز مختصرة. على عكس مُجمِّعات بعض الأنظمة الأخرى، مثل لغة التجميع X86 ، فإن رموز السجلات المختصرة ليست رموزًا محجوزة، بل تُعرَّف من خلال EQUعبارات في أماكن أخرى من البرنامج. يُحسِّن هذا من سهولة قراءة برامج لغة التجميع، ويوفر مرجعًا لاستخدام السجلات. [ و ] لذا، قد ترى عادةً ما يلي في برنامج مُجمِّع:

R3 EQU 3 ... L R3,ZIGGY 

من بين الرموز التذكيرية البارزة للتعليمات BALR[ g ] لاستدعاء تخزين عنوان الإرجاع ورمز الحالة في سجل، SVCو [ h ]DIAG ، و [ i ] ، و [ 5 ]ZAP .

تتكون تعليمات نظام التشغيل System/360 من كلمة واحدة أو كلمتين أو ثلاث كلمات نصفية (من بايتين إلى 6 بايتات). في الأصل، كانت هناك أربعة تنسيقات للتعليمات، يتم تحديدها بواسطة أول بتين من حقل رمز العملية؛ أضافت بنية z/Architecture تنسيقات إضافية.

وحدات الماكرو والتجميع المشروط

لم يكن مُجمِّع دعم البرمجة الأساسية يدعم وحدات الماكرو . تسمح الإصدارات اللاحقة من المُجمِّع، بدءًا من المُجمِّع D [ 6 ] ، للمبرمج بتجميع التعليمات في وحدات ماكرو وإضافتها إلى مكتبة، والتي يمكن استدعاؤها في برامج أخرى، عادةً مع مُعاملات، مثل إمكانيات المُعالِج المُسبق في لغة C واللغات المُشابهة. يمكن أن تتضمن وحدات الماكرو تعليمات مُجمِّع شرطية، مثل AIF(بنية "if")، المُستخدمة لإنشاء شيفرة مختلفة وفقًا للمُعاملات المُختارة. هذا ما يجعل ميزة وحدات الماكرو في هذا المُجمِّع قوية للغاية. في حين أن وحدات الماكرو متعددة الأسطر في لغة C تُعد استثناءً، إلا أن تعريفات وحدات الماكرو في المُجمِّع قد تصل بسهولة إلى مئات الأسطر.

وحدات ماكرو نظام التشغيل

تتطلب معظم البرامج خدمات من نظام التشغيل ، ويوفر نظام التشغيل وحدات ماكرو قياسية لطلب هذه الخدمات. وهي تُشابه استدعاءات نظام يونكس . على سبيل المثال، في نظام MVS (لاحقًا z/OS)، يقوم الأمر (مع المعامل) بتخصيص كتلة من الذاكرة ديناميكيًا، واسترجاع السجل المنطقي التالي من ملف.STORAGEOBTAINGET

تعتمد هذه الماكرو على نظام التشغيل؛ فعلى عكس العديد من لغات البرمجة عالية المستوى، لا توفر لغات التجميع الخاصة بحواسيب IBM المركزية تعليمات أو مكتبات مستقلة عن نظام التشغيل لتخصيص الذاكرة، أو تنفيذ عمليات الإدخال/الإخراج، وما إلى ذلك، كما أن أنظمة تشغيل حواسيب IBM المركزية المختلفة غير متوافقة على مستوى خدمة النظام. على سبيل المثال، ستتم كتابة ملف تسلسلي بشكل مختلف في نظام z/OS عنه في نظام z/VSE.

أمثلة

يوضح الجزء التالي كيفية تنفيذ المنطق "إذا كان SEX = 'M'، أضف 1 إلى MALES؛ وإلا، أضف 1 إلى FEMALES" في لغة التجميع.

 CLI SEX,C'M' ذكر؟ BNE IS_FEM إذا لم يكن الأمر كذلك، فقم بالتفرع حولها L 7,MALES تحميل القيمة الحالية لـ MALES في السجل 7 LA 7,1(7) أضف 1 ST 7، ذكور، تخزين النتيجة B GO_ON انتهيت من هذا الجزء IS_FEM EQU * علامة L 7,FEMALES تحميل القيمة الحالية في FEMALES إلى السجل 7 LA 7,1(7) أضف 1 ST 7، الإناث، احفظي النتيجة GO_ON EQU * - باقي البرنامج - * عداد الذكور DC F'0' (القيمة الابتدائية = 0) عداد الإناث DC F'0' (القيمة الابتدائية = 0) 

فيما يلي برنامج "Hello, World!" المنتشر في كل مكان ، والذي عند تشغيله تحت نظام تشغيل IBM مثل OS/VS1 أو MVS ، سيعرض عبارة "Hello, World!" على وحدة تحكم المشغل:

مرحباً CSECT، اسم هذا البرنامج هو 'HELLO' * سجل 15 نقطة هنا عند الدخول من OPSYS أو المتصل. STM 14,12,12(13) حفظ السجلات 14 و15 ومن 0 إلى 12 في منطقة الحفظ الخاصة بالمتصل LR 12,15 قم بإعداد سجل القاعدة بعنوان نقطة دخول البرنامج باستخدام HELLO,12، أخبر المُجمِّع بالسجل الذي نستخدمه لقاعدة البرنامج. LA 15، وفر الآن. توجه إلى منطقة الحفظ الخاصة بنا. ST 15,8(13) ضبط سلسلة الحركة الأمامية ST 13,4(15) سلسلة متراجعة LR 13,15 اضبط R13 على عنوان منطقة الحفظ الجديدة * -نهاية أعمال التنظيف (متشابهة في معظم البرامج) - منظمة التجارة العالمية 'مرحباً بالعالم!' كتابة إلى المشغل (ماكرو نظام التشغيل) * L 13,4(13) استعادة العنوان إلى منطقة الحفظ التي قدمها المتصل XC 8(4,13),8(13) سلسلة أمامية واضحة LM 14,12,12(13) استعادة السجلات كما كانت عند الإدخال DROP 12 عكس كلمة "استخدام" SR 15,15 اضبط قيمة المسجل 15 على 0 بحيث يكون رمز الإرجاع (R15) صفرًا BR 14 العودة إلى المتصل * حفظ DS 18F: تعريف 18 كلمة كاملة لحفظ سجلات البرنامج المستدعي نهاية البرنامج 

WTOهو ماكرو مُجمِّع يُولِّد استدعاءً لنظام التشغيل. وبفضل حفظ السجلات واستعادتها وإعادتها لاحقًا، يُمكن استخدام هذا البرنامج الصغير كبرنامج دفعي يتم استدعاؤه مباشرةً بواسطة لغة التحكم في وظائف نظام التشغيل (JCL) على النحو التالي:

// تنفيذ البرنامج = HELLO

أو بدلاً من ذلك، يمكن استدعاؤه كإجراء فرعي من برنامج كهذا:

اتصل بنا مرحباً 

يتوسع إلى

L R15,=V(HELLO) BALR R14,R15 

الإصدارات

طباعة مهمة الدفعة التي تعرض صفحة تعريف المُجمِّع G

باستثناء مُجمِّعات نظام IBM System/360 Model 20 ، كانت مُجمِّعات IBM متوافقة إلى حد كبير مع الأنظمة الأحدث. وانصبّت الاختلافات بشكل رئيسي على تعقيد التعبيرات المسموح بها ومعالجة وحدات الماكرو. وقد صُمِّمت مُجمِّعات نظام التشغيل OS/360 في الأصل وفقًا لمتطلبات الذاكرة الخاصة بها.

دعم البرمجة الأساسية لمجمع البرامج

يُعدّ مُجمِّع BPS مُجمِّعًا أساسيًا حقيقيًا. صُمِّمَ ليتم تحميله من البطاقات، ويعمل على  نظام System/360 بسعة 8 كيلوبايت (باستثناء الطراز 20). لا يدعم تعليمات الماكرو أو الرموز المختصرة الموسعة (مثل BH بدلًا من BC 2 للتفرع إذا كان رمز الحالة 2 يشير إلى مقارنة عالية). يُمكنه تجميع قسم تحكم واحد فقط، ولا يسمح بأقسام وهمية (تعريفات هيكلية). لا يُسمح بالتعبيرات بين قوسين، وتقتصر التعبيرات على ثلاثة حدود، مع استخدام المعاملات '+' و'-' و'*' فقط. [ 7 ] : 59-61

لغة تجميع نظام التشغيل الأساسي

يحتوي نظام التشغيل الأساسي على نسختين من لغة التجميع. تتطلب كلتاهما  ذاكرة بحجم 16 كيلوبايت، إحداهما موجودة على شريط تخزين والأخرى على قرص. [ 8 ] : 7-8

المُجمِّع د

كان برنامج التجميع D هو برنامج التجميع الخاص بنظام DOS/360 للأجهزة ذات ذاكرة بحجم 16  كيلوبايت. وقد صدر بنسختين:  نسخة بحجم 10 كيلوبايت للأجهزة ذات  ذاكرة لا تقل عن 16 كيلوبايت، ونسخة بحجم 14  كيلوبايت للأجهزة ذات ذاكرة بحجم 24  كيلوبايت. كما توفر برنامج تجميع من المستوى F لأجهزة DOS ذات ذاكرة بحجم 64  كيلوبايت أو أكثر. وقد وفرت برامج التجميع D جميع ميزات الإصدارات الأعلى تقريبًا. [ 9 ] : 7

المُجمِّع E و F

صُمم المُجمِّع E للعمل على نظام OS/360 بحد أدنى  من الذاكرة الرئيسية يبلغ 32 كيلوبايت، ويتطلب المُجمِّع نفسه 15  كيلوبايت. [ 10 ] : 2 يمكن تشغيل المُجمِّع F على نظامي DOS/360 أو OS/360 على نظام  بذاكرة 64 كيلوبايت، ويتطلب المُجمِّع 44  كيلوبايت. [ 11 ] [ 12 ] [ 13 ] تُعد هذه المُجمِّعات جزءًا أساسيًا من نظام OS/360؛ وقد حُدِّد الإصدار المُولَّد أثناء إنشاء النظام (SYSGEN).

المُجمِّع H

يعمل برنامج التجميع H على نظام التشغيل OS/360 والإصدارات اللاحقة ؛ لقد كان أسرع وأكثر قوة من برنامج التجميع F، لكن لغة الماكرو لم تكن متوافقة تمامًا.

أُعلن عن الإصدار الثاني من لغة التجميع H في عام 1981 ، وهو يدعم بنية XA الموسعة، بما في ذلك AMODEالتوجيهات [ 14 ] : 3-28RMODE . تم سحبه من السوق في عام 1994، وانتهى دعمه في عام 1995. وقد استُبدل بلغة التجميع عالية المستوى [ 15 ] .

مُجمِّع XF

يُعدّ مُجمِّع XF ترقيةً متوافقةً إلى حدٍّ كبيرٍ لمُجمِّع F، ويتضمن تعليمات معمارية System/370 الجديدة. يوفر هذا الإصدار مُجمِّعًا مشتركًا لأنظمة OS/VS وDOS/VS وVM. تشمل التغييرات الأخرى تخفيف القيود المفروضة على التعبيرات ومعالجة وحدات الماكرو. يتطلب مُجمِّع XF حدًّا أدنى لحجم القسم/المنطقة يبلغ 64  كيلوبايت (افتراضيًا). الحجم المُوصى به هو 128  كيلوبايت. [ 16 ] : 73

مُجمِّع عالي المستوى

تم إصدار لغة التجميع عالية المستوى ( HLASM ) في يونيو 1992 لتحل محل لغة التجميع H الإصدار 2 من شركة IBM. [ 17 ] [ 18 ] وكانت لغة التجميع الافتراضية لأنظمة System/370 وSystem/390، كما دعمت أنظمة التشغيل MVS وVSE وVM. واعتبارًا من عام 2023، أصبحت لغة التجميع الحالية لشركة IBM لأنظمة التشغيل z/OS و z/VSE و z/VM و z/TPF على حواسيب z/Architecture المركزية . كما تعمل الإصدارات 6 وما بعدها على نظام Linux ، وتُنتج ملفات كائنات ELF أو GOFF (يُشار إلى هذه البيئة أحيانًا باسم Linux على IBM Z ). [ 19 ] أثناء عمله في IBM، ابتكر جون روبرت إيرمان لغة التجميع عالية المستوى (HLASM) وكان المطور الرئيسي لها [ j ] ، ويُعتبر "أبو لغة التجميع عالية المستوى". [ 21 ]

على الرغم من الاسم، لا يمتلك HLASM بمفرده العديد من الميزات المرتبطة عادةً بمجمع عالي المستوى . قد يكون الاسم مشتقًا من إمكانيات لغة الماكرو الإضافية، مثل القدرة على كتابة الدوال المعرفة من قبل المستخدم. يشبه المجمع إلى حد كبير المجمع H والمجمع (XF)، مع دمج تعديلات طورها جريج موشيال في مختبر SLAC الوطني للمسرعات (مركز ستانفورد للمسرعات الخطية سابقًا). من بين الميزات المضافة: مؤشر CSECT/ DSECTلعداد الموقع، والعبارات التابعة [ k ] والعبارات المُصنفة [ l ]USING ، وقائمة USINGبالعبارات النشطة حاليًا، ومؤشر لما إذا كان المتغير يُقرأ أو يُكتب في المرجع التبادلي، والسماح بأسماء الرموز بأحرف كبيرة وصغيرة. [ 18 ] يسمح التوجيه RSECT(قسم التحكم للقراءة فقط) للمجمع بالتحقق من إمكانية إعادة الدخول على أساس كل قسم. RSECTكان سابقًا "غير موثق ومنفذًا بشكل غير متسق في المجمع H". [ 22 ] : 41

مجموعة أدوات التجميع عالية المستوى

مجموعة أدوات التجميع عالية المستوى هي ملحق يُباع بشكل منفصل لبرنامج التجميع عالي المستوى. تحتوي مجموعة الأدوات على: [ 23 ]

نسخة متخصصة

مُجمِّع حزمة الدعم 7090/7094

تتكون حزمة دعم IBM 7090/7094، والمعروفة باسم SUPPAK، من ثلاثة برامج مصممة للسماح بتجميع البرامج المكتوبة لنظام System 360 واختبارها وتنفيذها على IBM 709 أو 7090 أو 7094 أو 7094  II.

يعمل هذا المُجمِّع المتقاطع على نظام 7090 أو 7094 ، وقد استُخدم أثناء تطوير نظام System/360. [ 7 ] [ 24 ] يدعم هذا المُجمِّع مجموعة أحرف BCD سداسية البتات بالإضافة إلى EBCDIC ثمانية البتات .

أجهزة تجميع IBM System/360 موديل 20

زودت شركة IBM جهاز Model 20 بمجمعين: مجمع Model 20 الأساسي، ومجمع Model 20 DPS/TPS. يدعم كلا المجمعين التعليمات المتوفرة فقط على جهاز Model 20، بما في ذلك التعليمات الفريدة . [ 25 CIO] : 110. يُعد المجمع الأساسي نسخةً محدودةً نوعًا ما من مجمع System/360 الأساسي؛ [ 26 ] حيث يقتصر طول الرموز على أربعة أحرف. يمكن تشغيل هذه النسخة على نظام بذاكرة 4 كيلوبايت، ويقتصر دعم وحدات الماكرو على وحدات ماكرو IOCS . أما نسخ البطاقات فهي مجمعات ثنائية المرور تدعم فقط إدخال/إخراج البطاقات. بينما نسخ الشريط أحادية المرور، وتستخدم الشريط المغناطيسي للتخزين المؤقت. يمكن للبرامج المُجمَّعة باستخدام مجمع CPS الوصول إلى 16 كيلوبايت كحد أقصى. [ 26 ] : 7-8TIOXIOBSPSWBASBASRHPR  

يُعد مُجمِّع DPS/TPS نسخةً محدودةً نوعًا ما من مُجمِّع System/360 BPS/BOS. [ 25 ] : 132–134

مُجمِّع IBM System/360 موديل 44 PS

يقوم برنامج IBM System/360 Model 44 Programming System Assembler بمعالجة لغة هي "مجموعة فرعية مختارة" من لغة التجميع الخاصة بنظامي التشغيل OS/360 و DOS/360.

الأهم من ذلك، أن مُجمِّع النموذج 44 يفتقر إلى دعم وحدات الماكرو وعبارات الاستمرار. من ناحية أخرى، يتميز بعدد من الخصائص غير الموجودة في مُجمِّعات System/360 الأخرى، ولا سيما تعليمات تحديث مجموعة بيانات مصدر صورة البطاقة ، وكلمة "common" المسماة، والتعريف الضمني SETAلمتغيرات المُجمِّع. [ 27 ]

لا يدعم هذا الجهاز تعليمات التخزين إلى التخزين (SS) أو تعليمات التحويل إلى ثنائي ( CVB) والتحويل إلى عشري ( CVD) والقراءة المباشرة ( RDD) والكتابة المباشرة ( WRD). [ 28 ] ولكنه يتضمن أربع تعليمات خاصة بالطراز 44: تغيير قناع الأولوية ( CHPMوتحميل PSW الخاص ( LPSXوقراءة الكلمة المباشرة ( RDDWوكتابة الكلمة المباشرة ( WRDW).

يتضمن أيضًا توجيهات لتحديث البرنامج المصدر، وهي وظيفة تؤديها برامج مساعدة في أنظمة أخرى ( SKPTO, REWND, NUM, OMITو ENDUP). [ 28 ] : 53، 73

مُجمِّع نظام IBM System/360 TSS

يحتوي مُجمِّع نظام المشاركة الزمنية System/360 Model 67 على عدد من الاختلافات في التوجيهات لدعم ميزات نظام المشاركة الزمنية الفريدة. PSECTيُنشئ هذا التوجيه قسم تحكم نموذجي يحتوي على ثوابت عناوين قابلة للنقل وبيانات قابلة للتعديل يستخدمها البرنامج. [ 29 ] : 143

المُجمِّع G

"المُجمِّع G" عبارة عن مجموعة من التعديلات التي أُجريت على المُجمِّع F في سبعينيات القرن الماضي من قِبل جامعة واترلو (كان المُجمِّع F ولا يزال مفتوح المصدر). وتتركز التحسينات في الغالب على تحسين معالجة المدخلات والمخرجات، بالإضافة إلى تحسين التخزين المؤقت، مما يُسرِّع عملية التجميع بشكل ملحوظ. [ 30 ] لم يكن "المُجمِّع G" منتجًا من منتجات شركة IBM.

برامج تجميع غير تابعة لشركة IBM

لقد ظهرت العديد من برامج التجميع المتوافقة مع IBM للبيئات الخاصة. [ 31 ]

  • تم تصميم سلسلة Univac 90/60 و 90/70 و 90/80 من شركة Unisys لقبول لغة التجميع بتنسيق IBM، حيث كانت سلسلة الآلات مشابهة لـ S/360 و S/370.
  • تم بناء سلسلة Fujitsu BS2000 أيضًا كنسخة مشابهة لسلسلة 370 من نفس المصدر الذي استخدمته Univac، ولا تزال قيد الاستخدام في بعض أجزاء أوروبا . [ 32 ]
  • Dignus LLC Systems/ASM هو مُجمِّع متوافق مع HLASM ويمكن تشغيله بشكل أصلي على أنظمة IBM أو كمُجمِّع متقاطع. [ 33 ]
  • تم شراء برنامج PC/370 المجاني ، الذي كتبه دون هيغينز، لاحقًا بواسطة شركة مايكرو فوكس .
  • z390 هو برنامج تجميع ومحاكاة لنظام System 390، كتبه دون هيغينز، وهو مبرمج بلغة جافا . وهو برنامج مفتوح المصدر ومتاح على الرابط التالي: http://www.z390.org/
  • قامت جامعة ولاية بنسلفانيا بتأليف حزمة تسمى ASSIST ، والتي تتضمن مُجمِّع ومُفسِّر النظام 370.
  • تقوم شركة Tachyon Software LLC بتسويق برنامج Tachyon Assembler Workbench الذي يعمل على أنظمة Windows وLinux/x86 وLinux لأنظمة S/390 وzSeries وAIX وSolaris. [ 34 ]
  • يُعدّ مُجمّع GNU (gas) جزءًا من مجموعة مُجمّعات GNU (gcc) لنظام Linux على نظامي التشغيل OS/390 وIBM Z. يتميز هذا المُجمّع ببنية فريدة غير متوافقة مع المُجمّعات الأخرى المُخصصة لبنى IBM.

أهمية

في الأصل، كُتبت جميع أنظمة تشغيل System/360 بلغة التجميع، وعُرّفت جميع واجهات النظام بواسطة تعريفات الماكرو. وكان الوصول من لغات البرمجة عالية المستوى (HLLs) مقيدًا بما تُوفره تلك اللغة، وكان لا بد من برمجة استدعاءات النظام الأخرى كإجراءات فرعية بلغة التجميع تُستدعى من برامج لغات البرمجة عالية المستوى. كما سمحت IBM بتخصيص ميزات نظام التشغيل من خلال ما يُعرف باسم " المخارج" (Exits) - وهي إجراءات يُوفرها المستخدم لتوسيع أو تعديل وظائف نظام التشغيل العادية. وكان من الضروري برمجة هذه المخارج بلغة التجميع. لاحقًا، أعادت IBM برمجة OS/360 بلغة برمجة الأنظمة PL/S ، ولكنها قررت، باستثناء تجربة قصيرة، عدم إتاحة مُترجم PL/S للمستخدمين. ونتيجةً لهذه العوامل، شهدت لغة التجميع استخدامًا واسع النطاق على أنظمة IBM لسنوات عديدة.

انظر أيضاً

ملحوظات

  1. تشير شركة IBM إلى الأحجام المستهدفة لبرامجها باستخدام الأحرف
    • D 16 كيلوبايت
    • E 32 Kib
    • F 64 كيلوبايت
    • G 128 كيلوبايت
    • H 256 كيلوبايت
    • I 512 كيلوبايت
  2. بعض التعليمات، على سبيل المثال، مساعدة معالجة الشبكة العصبية (NNPA)، معقدة للغاية.
  3. يتم استدعاء بعض الخدمات من خلال المكالمات المباشرة وعمليات التحرير من MVS/SP V1R3 عند استخدام استدعاء البرنامج (PC)، مع الاحتفاظ بواجهات SVC القديمة.
  4. لا تحتوي تعليمات التشخيص على رمز عملية التجميع، على الرغم من أن الأدبيات غالبًا ما تستخدمDIAGاستدعاء المشرف (HVC)؛ في الأصل كان DIAG على جهاز أساسي خاصًا بالطراز وغير متوافق مع استخدام VM.
  5. يحدد تعريف حقلي الأحرف 'TARGET' و'SOURCE' طولهما
  6. بالنسبة لـ HLASM المعاصر، يوفر مرجع السجل للأغراض العامة (الخيار RXREF ) بديلاً.
  7. تم استبدالمعظم استخدامات BALRBASR بتعليمات مماثلة.
  8. تم استبدالالعديد من استخدامات" بتعليمات.SVCPC
  9. يتم إعادة استخدام VMDIAGكتعليماتHVC.
  10. اتبعت HLASM متطلبات SHARE لدمج تحسينات جريج موشيال [ 20 ] على Assembler H في المنتج المدعوم.
  11. التابعUSINGهو الذي يحدد تعبيرًا قابلاً للنقل بدلاً من قائمة السجلات:
     باستخدام IHADCB، SYSPRINT ... ™ DCBOPTCD، DCBOPTC اختبار OPTCD في SYSPRINT ... 
  12. المسمىUSINGهو الذي يؤثر فقط على التعليمات التي تشير إليه صراحةً من خلال تحديد تعبير باستخدام مسمى:
     LA R4,SYSIN LA R5، SYSPRINT عند استخدام IHADCB، R4 الخروج باستخدام IHADCB، R5 ... TM IN.DCBOFLGS,DCBOFTM اختبار OFLGS في SYSIN ... TM OUT.DCBOPTCD,DCBOPTC اختبار OPTCD في SYSPRINT ... 

مراجع

  1. على سبيل المثال، انظر: ماكويلين، كيفن (1975). لغة التجميع لنظام التشغيل System/360–370 . فريسنو، كاليفورنيا: مايك موراش وشركاؤه. ص  17. LCCN 74-29645 . 
  2. على سبيل المثال، مقدمة للمبرمج إلى لغة التجميع IBM System/360 . بوكيبسي، نيويورك: شركة آلات الأعمال الدولية. 1969.
  3. على سبيل المثال، في "البطاقة الصفراء"، الصفحة السادسة من الملحق، والمُعَلَّمة بـ OS/VS وVM/370 وDOS/VS: "ملخص مرجعي لنظام التشغيل System/370" (وثيقة). وايت بلينز، نيويورك: شركة IBM. نوفمبر 1976.الطبعة الرابعة.
  4. مبادئ تشغيل نظام IBM System/360 (ملف PDF) . مكتبة مراجع أنظمة IBM. شركة IBM. A22-6821-0 . تاريخ الاسترجاع: 6 ديسمبر 2018 .
  5. "HLASM - قائمة بجميع رموز العمليات، والرموز المختصرة الموسعة، ورموز الوظائف، مرتبة حسب الرمز المختصر" . تم الاطلاع عليها في 14 يناير 2013 .
  6. "دعم البرمجة الأساسية لنظام IBM System/360" (ملف PDF) . bitsavers . ص 61. تم الاطلاع عليه بتاريخ 6 سبتمبر 2023 . 
  7. 1 2 دعم البرمجة الأساسية لنظام IBM System/360، لغة التجميع الأساسية (ملف PDF) . مكتبة مراجع أنظمة IBM. شركة IBM. فبراير 1965. C20-6503-0 . تاريخ الاسترجاع: 5 أبريل 2022 .
  8. مواصفات لغة نظام التشغيل الأساسي IBM System/360 (مجمع 16 كيلوبايت، قرص/شريط) (ملف PDF) . مكتبة مراجع أنظمة IBM. شركة IBM. ديسمبر 1965. C24-3414-1 . تاريخ الاسترجاع: 5 أبريل 2022 .
  9. شركة آي بي إم (1970). لغة التجميع لأنظمة تشغيل الأقراص والأشرطة IBM System/360 (ملف PDF) . تم الاطلاع عليه بتاريخ 19-09-2024 .
  10. دليل منطق برنامج نظام التشغيل IBM System/360 (32 كيلوبايت) (PDF) . IBM. 1966. Y26-3598-0.
  11. لغة التجميع لنظام تشغيل القرص IBM System/360 [ F ] منطق البرنامج (PDF) . IBM. 1968. Y26-3716-0.
  12. لغة التجميع (F) لمنطق برنامج نظام التشغيل IBM System/360 (ملف PDF) . IBM. 1971. GY26-3700-2.
  13. لغة التجميع لنظام التشغيل، إصدار نظام التشغيل 21 (ملف PDF) . شركة IBM. 1974. GC28-6514-9.
  14. شركة IBM (1984). دفتر تحويل MVS/Extended Architecture (PDF) .
  15. شركة آي بي إم (20 ديسمبر 1996). "5668-962 IBM Assembler H الإصدار 2 الإصدار 1.0" . آي بي إم . مؤرشف من الأصل في 24 سبتمبر 2021. تم الاسترجاع في 8 أكتوبر 2012 .
  16. شركة آي بي إم (1973). دليل مبرمج لغة التجميع لنظام التشغيل OS/VS (ملف PDF) . تم الاطلاع عليه بتاريخ 19-09-2024 .
  17. شركة آي بي إم (19 أكتوبر 2018). "مجمع آي بي إم عالي المستوى ومجموعة الأدوات - تاريخ الإصدار" . آي بي إم . تم الاطلاع عليه في 19 يناير 2025 .
  18. 1 2 "مجمع IBM عالي المستوى/MVS وVM وVSE" (رسالة إعلان). شركة IBM. 5 مايو 1992. 292-244 . تم الاطلاع عليه في 19 يناير 2025 .
  19. شركة آي بي إم (2008). دليل مستخدم لغة التجميع عالية المستوى لنظام لينكس على سلسلة z (ملف PDF) . تم الاطلاع عليه بتاريخ 23 يوليو 2025 .
  20. غريغ موشيال (20 يوليو 1983)، "الوحدة 24: تحسينات SLAC وتجميلات مُجمِّع IBM من المستوى H للإصدار 2.8" ، دفتر ملاحظات SLAC VM ، مركز ستانفورد للمُسرِّع الخطي، مؤرشف من الأصل في 24 سبتمبر 2020 ، تم استرجاعه في 11 يوليو 2023
  21. "دليل مجموعة جون ر. إيرمان" . الأرشيف الإلكتروني لكاليفورنيا . X5621.2010. مؤرشف من الأصل بتاريخ 15-10-2022 . تم الاطلاع عليه بتاريخ 15-10-2022 .
  22. دليل عرض تقديمي لبرنامج التجميع عالي المستوى من IBM لأنظمة MVS وVM وVSE الإصدار 2 (ملف PDF) . Redbooks. IBM . ديسمبر 1995. SG24-3910-01. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 23 يناير 2016. تم الاطلاع عليه بتاريخ 29 سبتمبر 2023 .
  23. شركة آي بي إم. "مكونات ميزات مجموعة الأدوات" . آي بي إم . تم الاطلاع عليه في 5 سبتمبر 2023 .
  24. حزمة دعم IBM 7090/7094 لنظام IBM System/360 (ملف PDF) . مكتبة مراجع أنظمة IBM. شركة IBM. نوفمبر 1964. C28-6501-2 . تاريخ الاطلاع: 5 أبريل 2022 .
  25. ١ ٢ شركة آي بي إم (أبريل ١٩٧٠). لغة التجميع لأنظمة برمجة الأقراص والأشرطة IBM System/360 موديل ٢٠ (ملف PDF) . تم الاطلاع عليه في ٢ أكتوبر ٢٠٢٣ .
  26. ١ ٢ شركة آي بي إم (مايو ١٩٦٩). دعم برمجة بطاقة نظام IBM/360 طراز ٢٠ بلغة التجميع الأساسية (ملف PDF) . تم الاطلاع عليه في ٢ أكتوبر ٢٠٢٣ .
  27. شركة آي بي إم (1966). لغة التجميع لنظام برمجة آي بي إم سيستم/360 موديل 44 (ملف PDF) . صفحة 73. تم الاطلاع عليه في 2 يوليو 2019 . 
  28. ١ ٢ شركة آي بي إم (١٩٦٦). لغة التجميع لنظام برمجة آي بي إم سيستم/٣٦٠ موديل ٤٤ (ملف PDF) . تم الاطلاع عليه بتاريخ ١٩-٠٩-٢٠٢٤ .
  29. شركة IBM (1976). دليل مبرمج لغة التجميع لنظام المشاركة الزمنية من IBM (ملف PDF) .
  30. مركز ستانفورد للمسرع الخطي. "قياس برنامج IBM SYSTEM 360 المعمم (SLAC-PUB-715)" (ملف PDF) . تم الاطلاع عليه بتاريخ 8 أكتوبر 2012 .
  31. ألكوك، ديفيد. "أسئلة وأجوبة حول مُجمِّع z/Architecture من ديف" . بلانيت إم في إس . تم الاسترجاع في 15 ديسمبر 2012 .
  32. كتيبات Fujitsu ASSEMH متوفرة على الرابط التالي: http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (تم الاطلاع عليها بتاريخ 27-02-2016)
  33. شركة ديغنوس المحدودة. "أنظمة/ASM" . تم الاسترجاع في 15 ديسمبر 2012 .
  34. شركة تاشيون للبرمجيات المحدودة. "برمجيات تاشيون" . تم الاطلاع عليه بتاريخ 15 ديسمبر 2012 .