مصرف تصالبي

من ويكيبيديا، الموسوعة الحرة
(بالتحويل من مجمع عابر)

المُصرِّف التصالبي[1] أو المُصرِّف المتعدد أو المُصرِّف العابر أو المُصرِّف المتعدي (بالإنجليزية: Cross compiler)‏ هو محول برمجي (مترجم) قادر على تحويل الكود البرمجي إلى ملف تنفيذي لأكثر من منصة حاسوبية، ويمكن أن ينتج أكواداً لمنصة تختلف عن المنصة التي يعمل عليها. فعلى سبيل المثال حينما يتم تجميع كود برنامج ما على حاسوب شخصي بهدف تصدير ملف تنفيذي يعمل على أجهزة الهواتف الذكية مثل أندرويد، تتم العملية عبر مجمع عابر.

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

استخدامات المترجم المتعدد[عدل]

الاستخدام الأساسي للمترجم المتعدد هو فصل بيئة بناء الكود عن بيئة التنفيذ. وهذا مفيد في عدة مواقع:

  • الأنظمة المضمنة حيث يملك الجهاز موارد محدودة. على سبيل المثال، يملك فرن الميكروويف حاسوباً صغيراً جداً يقرأ حساسات في الباب وشاشة اللمس، ويعطي مخرجات عبر شاشة رقمية ومكبر صوت، ويتحكم بالجهاز في طبخ الطعام. هذا الحاسوب ليس قوياً بما يكفي لتشغيل مترجم، أو نظام ملفات، أو بيئة برمجية. قد يتطلب اكتشاف العلل والاختبار موارد حاسوبية أكبر من موارد الأنظمة المضمنة، ولهذا يحتمل أن تكون الترجمة المتعددة أقل تعقيداً وعرضة للأخطاء من الترجمة العادية.
  • الترجمة لعدة أجهزة، على سبيل المثال، شركة تريد دعم إصدارات مختلفة من نظام تشغيل معين أو دعم عدة أنظمة تشغيل.باستخدام الترجمة المتعددة، يمكن أن تعمل الترجمة لهذه الأهداف بعملية بناء واحدة للبيئة.
  • الترجمة في مجموعة خوادم.يشبه الترجمة في عدة أجهزة، يتطلب البناء المعقد عدة عمليات ترجمة يمكن أن تنفذ في أي جهاز غير مشغول بغض النظر عن بنيته التحتية ومكوناته المادية أو نسخة نظام التشغيل الذي يعمل عليه.
  • إنشاء مترجم لمنصة جديدة.عندما تطور برنامج لمنصة جديدة، أو محاكي لمنصة مستقبلية، يستخدم المترجم المتعدد لترجمة الأدوات الضرورية مثل نظام التشغيل والمترجم الأصلي.
  • ترجمة كود أصلي للمحاكيات لمنصات قديمة مثل أبل 2 من قبل المتحمسين الذين يستخدمون الترجمة المتعددة والتي تعمل على منصة محددة (مثل المترجمات المتعددة أزتك 6502 (C's MS-DOS) والذي يعمل على ويندوز إكس بي).

استخدام الآلات الافتراضية (مثل آلة جافا الافتراضية) يظهر بعض من أسباب تطوير المترجمات المتعددة.

مترجمات سي ميكروسوفت[عدل]

الأوائل-الثمانينيات[عدل]

يملك مايكروسوفت فيجوال سي++ تاريخ طويل[2] يعود إلى ثمانينيات القرن الماضي. صنع أول مترجم ميكروسوفت سي بواسطة نفس الشركة التي صنعت مترجم سي الشعري (Lattice C) وتم تغيير الماركة إلى ميكروسوفت، حتى تم إطلاق مايكروسوفت فيجوال سي++ 4، والذي يعتبر أول مترجم تصنعه ميكروسوفت بنفسها.[3]

مراجع[عدل]

  1. ^ معجم المصطلحات المعلوماتية (بالعربية والإنجليزية)، دمشق: الجمعية العلمية السورية للمعلوماتية، 2000، ص. 131، OCLC:47938198، QID:Q108408025
  2. ^ Microsoft Language Utility Version History نسخة محفوظة 21 أكتوبر 2012 على موقع واي باك مشين.
  3. ^ History of PC based C-compilers [وصلة مكسورة] نسخة محفوظة 22 يوليو 2012 على موقع واي باك مشين.

وصلات إضافية[عدل]

  • Cross Compilation Tools – مرجع في التعديل على أدوات غنو في الترجمة المتعددة
  • Building Cross Toolchains with gcc هو أحد المراجع في المترجم المتعدد جي سي سي على شكل ويكي.
  • Scratchbox صندوق أدوات للمترجمات المتعددة من نظام لينكس إلى أي أر إم (ARM) وx86
  • Grand Unified Builder (GUB) (خاص بنظام لينكس) مترجم متعدد وعابر للمعماريات مثل: وندوز32/ماك/فري بي أس دي/لينكس يستخدم من قبل ليلي بوند.
  • Crosstool هو سلسلة أدوات من سكربتات، تنشأ بيئة مترجم متعدد على نظام لينكس لأجل معمارية معنية، من ضمنها الأنظمة المضمنة.
  • crosstool-NG هي أداة متعددة تساعد في بناء سلاسل الأدوات .
  • buildroot هي مجموعة من السكربتات لبناء سلسلة أدوات تعتمد على (uClibc)،عادة لأجل الأنظمة المضمنة.مستخدمة من قبل نظام (OpenWrt)
  • ELDK (Embedded Linux Development Kit). مستخدمة من قبل داس يو بوت.
  • T2 SDE هي مجموعة من السكربتات لبناء أنظمة لينكس كاملة تعتمد على مكتبة سي غنو (GNU libC)، أو uClibc أو dietlibc لأجل معماريات مختلفة.
  • Cross Linux from Scratch Project
  • تملك أي بي إم (IBM) تدريب واضح جداً حول بناء المتعدد لسلاسل الأدوات لمترجم جي سي سي.
  • (بالفرنسية) Cross-compilation avec GCC 4 sous Windows pour Linux - A تدريب فيه كيف تبني سلاسل الأدوات لمترجم جي سي سي، لكن من ويندوز إلى لينكس، الموضوع يُوضح ببطئ.