مُعيد تجميع البرامج الثنائية

المُترجم الثنائي هو مُترجم يأخذ ملفات ثنائية قابلة للتنفيذ كمدخلات، ويحلل بنيتها، ويطبق عليها التحويلات والتحسينات، ويُخرج ملفات ثنائية قابلة للتنفيذ مُحسّنة جديدة. [ 1 ]

وضع غاري كيلدال [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] أسس مفاهيم إعادة الترجمة الثنائية مع تطوير مترجم كود التجميع المحسن XLT86 في عام 1981. [ 4 ] [ 9 ] [ 10 ] [ 11 ]

انظر أيضاً

مراجع

  1. مودج، تريفور؛ راينهارت، ستيف؛ تايسون، غاري. "دراسات حول إعادة تجميع الملفات الثنائية وتحسينات المترجم/البنية المدمجة" . umich.edu . جامعة ميشيغان (UM). مؤرشف من الأصل بتاريخ 23 يوليو 2012. تم الاطلاع عليه بتاريخ 23 يوليو 2012 .
  2. كيلدال، غاري آرلين (مايو 1972). تحسين التعبيرات الشاملة أثناء الترجمة (أطروحة دكتوراه). سياتل، واشنطن، الولايات المتحدة الأمريكية: جامعة واشنطن ، قسم علوم الحاسوب. رقم الأطروحة 20506، رقم التقرير الفني 72-06-02.
  3. كيلدال، غاري آرلين (1973-10-01). "نهج موحد لتحسين البرامج العالمية" (ملف PDF) . وقائع الندوة السنوية الأولى لجمعية ACM SIGACT-SIGPLAN حول مبادئ لغات البرمجة - POPL '73 . الصفحات 194-206 . doi : 10.1145/512927.512945 . hdl : 10945/42162 . S2CID 10219496. مؤرشف من الأصل (ملف PDF) بتاريخ 29-06-2017 . تم الاطلاع عليه بتاريخ 20-11-2006 .  ()
  4. 1 2 فرايبرغر، بول (1981-10-19). "مترجمات البرامج تقوم بذلك حرفيًا - وأحيانًا في سياقها" . إنفوورلد - أخبار لمستخدمي الحواسيب الصغيرة . قسم خاص: توافق الحواسيب. المجلد 3، العدد 22. شركة بوبولار كومبيوتينغ، ص 19. الرقم الدولي الموحد للدوريات 0199-6649 . تاريخ الاسترجاع 2020-01-15 . [...] يوضح دانيال ديفيس، وهو مبرمج في شركة ديجيتال ريسيرش : "ما لم يكن لديك نظام ترجمة يأخذ في الاعتبار الخصائص الفريدة للمعالج الدقيق المستهدف، فلا توجد طريقة يمكن للمترجم الآلي أن يعمل بها. سينتهي بك الأمر إلى ترجمات حرفية مباشرة ." [...] على الرغم من كل هذه القيود، فقد تم إحراز تقدم مؤخرًا في تطوير المترجمات. والجدير بالذكر أن شركة ديجيتال ريسيرش قد قدمت مترجمًا لرمز التجميع من 8 إلى 16 بت. استنادًا إلى بحث أجراه غاري كيلدال ، رئيس شركة ديجيتال ريسيرش ، يبدو أن برنامج XLT86 يُقدم تطورات ملحوظة مقارنةً بتقنيات ترجمة البرامج المتاحة سابقًا. وكما هو الحال مع برنامجي Trans من شركة Sorcim و Convert 86 من شركة Intel ، يقوم برنامج كيلدال بترجمة كود لغة التجميع من معالج 8080 إلى معالج 8086. إلا أن كيلدال قد طبق تقنية تحليل تدفق شاملة تأخذ في الحسبان بعض العيوب الرئيسية لبرامج الترجمة الأخرى. يحلل هذا الإجراء استخدام السجلات والعلامات في أجزاء من كود 8080 بهدف حذف الكود غير الضروري . ووفقًا لمبرمج ديفيس في ديجيتال ريسيرش، فإن الخوارزمية التي يستخدمها كيلدال تسمح لبرنامج الترجمة بمراعاة السياق أثناء ترجمة البرنامج. وحتى الآن، كانت إحدى المشكلات الرئيسية في أي برنامج ترجمة هي عدم قدرة البرنامج على القيام بأكثر من مجرد الترجمة الصوتية. إذا نجح برنامج الترجمة الجديد من ديجيتال ريسيرش في تطوير التقنية إلى الحد الذي يسمح بمراعاة السياق، فقد تنتشر برامج الترجمة بشكل أكبر في سوق الحواسيب الصغيرة.    
  5. وارتون، جون هاريسون (1994-08-01). "غاري كيلدال، رائد الصناعة، يرحل عن عمر ناهز 52 عامًا: مبتكر أولى لغات الحواسيب الصغيرة وأنظمة تشغيل الأقراص" . تقرير المعالجات الدقيقة . 8 (10). شركة مايكرو ديزاين ريسورسز (MDR). مؤرشف من الأصل في 2016-11-18 . تم الاسترجاع في 2016-11-18 .
  6. «جائزة جمعية ناشري البرمجيات للدكتور غاري أ. كيلدال: الفائز بجائزة الإنجاز مدى الحياة من جمعية ناشري البرمجيات لعام 1995» . جمعية ناشري البرمجيات (SPA). 13 مارس 1995. تم الاطلاع عليه بتاريخ 21 ديسمبر 2019 عبر www.digitalresearch.biz.{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  7. سوين، مايكل (1997-04-01). "غاري كيلدال وريادة الأعمال الجماعية" . مجلة دكتور دوبز . مؤرشف من الأصل في 24-01-2007 . تم الاطلاع عليه في 20-11-2006 . في مارس 1995، كرّمت جمعية ناشري البرمجيات غاري بعد وفاته لمساهماته في صناعة الحواسيب. وذكروا بعضًا من إنجازاته: [...] في ثمانينيات القرن الماضي، ومن خلال معهد أبحاث البرمجيات (DRI )، قدّم برنامجًا لإعادة تجميع الملفات الثنائية. [...]
  8. هويت، روبرت؛ يوبانكس، جوردون ؛ رولاندر، توماس "توم" آلان ؛ لوز، ديفيد؛ ميشيل، هوارد إي.؛ هالا، برايان؛ وارتون، جون هاريسون ؛ بيرج، برايان؛ سو، ويليان؛ كيلدال، سكوت ؛ كامبي، بيل (25 أبريل 2014). لوز، ديفيد (محرر). "إرث غاري كيلدال: إهداء CP/M IEEE للمعالم البارزة" (ملف PDF) (نص الفيديو). باسيفيك غروف، كاليفورنيا، الولايات المتحدة الأمريكية: متحف تاريخ الحاسوب . رقم مرجع CHM: X7170.2014 . تاريخ الاسترجاع : 19 يناير 2020. [...] رولاندر : ذكرتُ سابقًا أن غاري كان يُحبّذ التعامل مع المشكلة كمهندس معماري. [...] وكان يرسم أجمل الصور لهياكل بياناته. [...] وعندما كان يُنهي ذلك [...] ويقتنع بصحة هياكل البيانات هذه، كان يدخل في حالة من الهوس البرمجي لا تُصدّق. كان يغيب عن العمل لمدة تصل إلى 20 ساعة يوميًا، وكان يختفي تمامًا خلال تلك الفترات. في بعض تلك المرات، عندما كان ينجح في تشغيل برنامج ما لأول مرة، ربما في منتصف الليل. وكل من كتب برامجًا يعرف ذلك، على سبيل المثال، أنه بمجرد ظهور البرنامج على الشاشة لأول مرة، يجب إخبار أحدهم. ستخبركم زوجتي لوري أنني تلقيت مكالمتين من هذا القبيل في منتصف الليل، وكان برنامج LOGO مثالًا، وبرنامج XLT 86 مثالًا آخر، حيث كان ينجح في تشغيله لأول مرة، وكان عليه أن يرى أحدهم كيف يعمل. لذا لم يكن يهم الوقت، كان يتصل بي، وكان عليّ الحضور ورؤية البرنامج يعمل.(33 صفحة)
  9. باري، تيم (5 أبريل 1982). "XLT-86، برنامج مساعد لنظام CP/M من إنتاج شركة Digital Research" . InfoWorld - النشرة الإخبارية الأسبوعية لمستخدمي الحواسيب الصغيرة . مراجعة برامج InfoWorld. المجلد 4، العدد 13. Popular Computing, Inc. الصفحات 40-41 ، 53. ISSN 0199-6649 . تاريخ الاسترجاع: 25 يناير 2020. [...] XLT-86 هو برنامج ترجمة تحليلي مكتوب بلغة PL/I-80 . يقرأ البرنامج المصدر 8080 بالكامل ، ويجمعه إلى لغة الآلة ، ويحلل استخدام السجلات والذاكرة والأعلام، ثم يُصدر برنامجًا مُحسَّنًا بلغة التجميع 8086. [...] تتم ترجمة البرنامج في خمس خطوات. أولًا، يتم مسح البرنامج ضوئيًا وتجميعه لإنتاج قيم الرموز ومواقعها. ثانيًا، يتم تحليل بنية البرنامج وتفكيكها إلى وحدات أساسية . ثالثًا، تُحلل الوحدات الأساسية لتحديد تدفق البرنامج واستخدام الموارد. رابعًا، تُجمع بيانات بنية الوحدات وتخصيص السجلات في قائمة للمستخدم. خامسًا، تُستخدم معلومات التدفق وبرنامج المصدر لإنتاج برنامج المصدر 8086. […]    
  10. كيلدال، غاري آرلين (19 أبريل 1982). سوين، مايكل ؛ فرايبرغر، بول ؛ ماركوف، جون غريغوري (محررون). "مؤسس شركة الأبحاث الرقمية يناقش رؤيته للأعمال" . إنفوورلد - النشرة الإخبارية الأسبوعية لمستخدمي الحواسيب الصغيرة . قسم خاص: CP/M. المجلد 4، العدد 15. شركة Popular Computing، الصفحات 23-24 . الرقم الدولي الموحد للدوريات 0199-6649 . تاريخ الاسترجاع 17 يناير 2020. [...] كيلدال: [...] قبل عام ونصف، كنتُ أقضي على الأرجح 75% من وقتي في العمل و25% في البرمجة. كان XLT-86 منتجًا أعمل عليه في ذلك الوقت، واستغرق مني تسعة أشهر لإنجازه. كان من الممكن أن يكون مشروعًا لمدة ثلاثة أشهر لو تمكنت من التركيز عليه. [...]    
  11. كيلدال، غاري آرلين (يونيو-يوليو 1982). بونيل، ديفيد هيو ؛ إيدلين، جيم (محرران). "غاري كيلدال - الرجل الذي ابتكر CP/M: مبتكر CP/M - مقابلة حصرية معمقة مع رائد البرمجيات غاري كيلدال" . مجلة PC . أنظمة التشغيل. المجلد 1، العدد 3. شركة Software Communications، الصفحات 32-38 ، 40. تاريخ الاسترجاع: 17 يناير 2020. [...] PC: ما هي بعض التعقيدات التي ينطوي عليها تحويل برنامج من صيغة 8080 إلى صيغة 8086 ؟ كيلدال : يمكن إجراء التحويلات المباشرة على مستوى البرنامج المصدر بشكل آلي إلى حد كبير. على سبيل المثال، تتحول تعليمة "Add immediate 5" في 8080 إلى "Add AL 5" في 8086 - وهي ترجمة مباشرة للغاية لرموز العمليات نفسها. تكمن صعوبة الترجمة الآلية في حالات مثل هذه: تأخذ تعليمة 8080 المسجِّل HL وتضيف إليه DE. أما في 8086، فالتعليمة المكافئة هي ADD DX BX، وهذا صحيح، ولا توجد مشكلة. ببساطة، يُشير النظام إلى أن المسجِّل DX هو نفسه HL، وBX هو نفسه DE. تكمن المشكلة في أن تعليمة 8086 لها تأثير جانبي يتمثل في ضبط علامة الصفر، بينما لا تفعل تعليمة 8080 ذلك. في الترجمة الآلية، ينتهي الأمر بحفظ العلامات واستعادتها، وإجراء بعض عمليات الإزاحة والتدوير، وما إلى ذلك. تُضيف هذه العمليات حوالي خمس أو ست تعليمات إضافية للحصول على نفس النتيجة. هناك العديد من التسلسلات في كود 8080 تُنتج تسلسلات غريبة جدًا في كود 8086؛ ببساطة لا تتم مطابقتها بشكل جيد بسبب سجلات العلامات وما شابه. الطريقة التي ننقل بها البرامج هي تقنية تُسمى XLT-86 ، وهي متوفرة منذ حوالي ستة أشهر. الحاسوب: هل تقصد بـ"كود أفضل" أنه أصغر حجمًا؟ كيلدال: أصغر بنسبة 20% مما لو أخذت كل رمز عملية وقمت بترجمته مباشرةً، مع توفير السجلات للحفاظ على دلالات الكود. الحاسوب: كيف يقارن حجم البرنامج المترجم بنسخة 8080؟ كيلدال: إذا أخذت برنامج 8080، ونقلته إلى معالج 86، وقمت بترجمته باستخدام XLT-86، ستجد أنه أكبر بنسبة تتراوح بين 10 و20% تقريبًا. مع أجهزة 16 بت، يصبح من الصعب معالجة كل شيء؛ لذا تحصل على رموز عمليات أكبر قليلًا في المتوسط. ومن الظواهر المثيرة للاهتمام أن أحد أسباب عدم تحقيق زيادة هائلة في السرعة في عالم 16 بت هو تشغيل عدد أكبر من رموز العمليات عبر ناقل البيانات. […]   

للمزيد من القراءة