الترامبولين (الحوسبة)
في برمجة الكمبيوتر ، لكلمة ترامبولين عدد من المعاني، وترتبط عمومًا بتعليمات القفز (أي الانتقال إلى مسارات التعليمات البرمجية المختلفة).
البرمجة منخفضة المستوى
الترامبولينات (التي تُعرف أحيانًا باسم متجهات القفز غير المباشرة ) هي مواقع في الذاكرة تحتوي على عناوين تشير إلى إجراءات خدمة المقاطعة ، وإجراءات الإدخال/الإخراج ، وما إلى ذلك. يقفز التنفيذ إلى داخل الترامبولين ثم يقفز للخارج فورًا، أو يرتد، ومن هنا جاء مصطلح الترامبولين . ولها استخدامات عديدة.
- يمكن استخدام تقنية الترامبولين للتغلب على القيود التي تفرضها بنية وحدة المعالجة المركزية (CPU) التي تتوقع دائمًا العثور على المتجهات في مواقع ثابتة.
- عند تشغيل نظام تشغيل على جهاز متعدد المعالجات المتناظرة (SMP)، يكون معالج واحد فقط نشطًا، وهو معالج التمهيد. بعد أن يُهيئ نظام التشغيل نفسه، يُصدر تعليمات للمعالجات الأخرى للانتقال إلى جزء من التعليمات البرمجية الوسيطة التي تُهيئ المعالجات وتنتظر بدء نظام التشغيل في جدولة العمليات عليها.
برمجة عالية المستوى
- كما هو مستخدم في بعض تطبيقات لغة ليسب ، فإن الترامبولين عبارة عن حلقة تكرارية تستدعي بشكل متكرر دوالًا تُرجع قيمة مؤقتة ( أسلوب تمرير الاستمرارية ). يكفي استخدام ترامبولين واحد للتعبير عن جميع عمليات نقل التحكم في البرنامج؛ يُسمى البرنامج المُعبَّر عنه بهذه الطريقة "مُحوَّلًا إلى ترامبولين"، أو " بأسلوب الترامبولين ". تحويل البرنامج إلى أسلوب الترامبولين يُسمى "الترامبولين". يمكن للمبرمجين استخدام الدوال المُحوَّلة إلى ترامبولين لتنفيذ استدعاءات الدوال التكرارية الذيلية في لغات البرمجة الموجهة نحو المكدس . [ 1 ]
- في لغة جافا ، يشير مصطلح "الترامبولين" إلى استخدام الانعكاس لتجنب استخدام الفئات الداخلية ، كما هو الحال في مستمعي الأحداث. يتم التضحية بالوقت الإضافي الناتج عن استدعاء الانعكاس مقابل المساحة الإضافية الناتجة عن استخدام فئة داخلية. عادةً ما تتضمن عمليات الترامبولين في جافا إنشاء مستمع عام (GenericListener) لتمرير الأحداث إلى فئة خارجية. [ 2 ]
- في بيئة تشغيل Mono ، تُعدّ الترامبولينات أجزاءً صغيرة مكتوبة يدويًا من كود التجميع تُستخدم لأداء مهام متنوعة. [ 3 ]
- عند ربط أجزاء من التعليمات البرمجية ذات اصطلاحات استدعاء غير متوافقة ، يتم استخدام الترامبولين لتحويل اصطلاح المتصل إلى اصطلاح المتصل به.
- في الأنظمة المدمجة ، تُعدّ الترامبولينات أجزاءً قصيرة من التعليمات البرمجية التي تُشغّل أجزاءً أخرى من التعليمات البرمجية. على سبيل المثال، بدلاً من كتابة معالجات المقاطعات بالكامل بلغة التجميع، يُمكن كتابة معظمها بلغة C، واستخدام ترامبولين قصير لتحويل اصطلاح استدعاء المقاطعات في لغة التجميع إلى اصطلاح استدعاء المقاطعات في لغة C. [ 4 ]
- عند تمرير دالة رد نداء إلى نظام يتوقع استدعاء دالة مكتوبة بلغة C ، ولكن يُراد منه تنفيذ دالة خاصة بنسخة معينة من فئة مكتوبة بلغة C++ ، يُستخدم وسيط مؤقت لتحويل اصطلاح استدعاء الدوال في C إلى اصطلاح استدعاء الدوال في C++. إحدى طرق كتابة هذا الوسيط هي استخدام دالة ثنك . [ 5 ] طريقة أخرى هي استخدام مستمع عام . [ 2 ]
- في لغة Objective-C ، الترامبولين هو كائن يتم إرجاعه بواسطة طريقة تقوم بالتقاط جميع الرسائل المرسلة إليها وتجسيدها ثم "ترتد" تلك الرسائل إلى كائن آخر، على سبيل المثال في المراسلة ذات الترتيب الأعلى . [ 6 ]
- في مُصرّف GCC ، يُشير مصطلح "الترامبولين" إلى تقنية لتنفيذ مؤشرات إلى الدوال المُتداخلة عند تفعيل الخيار [ 7 ] . الترامبولين عبارة عن جزء صغير من التعليمات البرمجية يُنشأ ديناميكيًا على المكدس عند أخذ عنوان دالة مُتداخلة. يُهيئ الترامبولين مؤشر الربط الثابت، مما يسمح للدالة المُتداخلة بالوصول إلى المتغيرات المحلية للدالة المُحيطة. يكون مؤشر الدالة حينها ببساطة هو عنوان الترامبولين. هذا يُجنّب استخدام مؤشرات الدوال "الضخمة" للدوال المُتداخلة التي تحمل كلاً من عنوان التعليمات البرمجية والربط الثابت. [ 8 ] [ 9 ] [ 10 ] مع ذلك، يتعارض هذا مع الرغبة في جعل المكدس غير قابل للتنفيذ لأسباب أمنية.
-ftrampolines - في لغة البرمجة الباطنية Befunge ، فإن الترامبولين عبارة عن تعليمات لتجاوز الخلية التالية في تدفق التحكم .
مكدسات لا يمكن تنفيذها
تتسبب بعض تطبيقات الترامبولين في فقدان مكدسات عدم التنفيذ (مكدس NX). في مجموعة مترجمات GNU (GCC) تحديدًا، تقوم دالة متداخلة بإنشاء ترامبولين على المكدس أثناء التشغيل، ثم تستدعي الدالة المتداخلة من خلال البيانات الموجودة على المكدس. يتطلب الترامبولين أن يكون المكدس قابلاً للتنفيذ.
في بيئة GCC، لا يمكن استخدام مكدسات NX مع الدوال المتداخلة. فإذا استُخدمت دالة متداخلة أثناء تطوير البرنامج، فسيتم فقدان مكدس NX دون تنبيه. ويُصدر GCC تحذيرًا -Wtrampolinesلتنبيه المستخدم إلى هذه الحالة.
غالباً ما لا تسمح البرامج المصممة باستخدام دورة حياة التطوير الآمنة باستخدام الوظائف المتداخلة بسبب فقدان حزم NX. [ 11 ]
انظر أيضاً
مراجع
- ↑ بيكر، هنري ج. (سبتمبر 1995). "لا ينبغي للمعارضين أن يعارضوا حججهم، الجزء الثاني: تشيني بشأن هيئة النقل الحضري". إشعارات ACM SIGPLAN . 30 (9): 17-20 . doi : 10.1145/214448.214454 . S2CID 20720831. مؤرشف من الأصل في 11 نوفمبر 2016.
- 1 2 مولر، هانز (31 يناير 2005). "التحكم في واجهة المستخدم الرسومية: الأوامر، والإعدادات الافتراضية، وحزم الموارد" . today.java.net . Trampolines . تم الاطلاع عليه بتاريخ 6 نوفمبر 2015 .
- ↑ "الترامبولين" . مشروع مونو. 8 أكتوبر 2022.
- ↑ لينك، جوزيف م. (1 سبتمبر 2001). "الترامبولين للأنظمة المدمجة: تقليل زمن استجابة معالجات المقاطعات" . مجلة دكتور دوبز . مؤرشف من الأصل في 27 مايو 2018. تم الاطلاع عليه في 26 مايو 2018 .
- ↑ ستانغفيك، إينار أوتو (16 أغسطس 2006). "البرمجة المنطقية في نظام التشغيل ويندوز 32 باستخدام لغة C++" . مؤرشف من الأصل بتاريخ 15 أكتوبر 2012.
- ↑ ويير، مارسيل (2004). "المراسلة من الدرجة العليا (HOM)" (ملف PDF) . مؤرشف (PDF) من الأصل بتاريخ 27-05-2018 . تم الاطلاع عليه بتاريخ 26-05-2018 .
- ↑ fuz (2011-11-18). "تنفيذ الدوال المتداخلة" . StackOverflow . مؤرشف من الأصل في 2016-03-29 . تم الاطلاع عليه في 2018-05-26 .
- ↑ "الترامبولين للدوال المتداخلة" . باستخدام مجموعة مترجمات جنو (GCC) . 2018 [2002]. 18.11. مؤرشف من الأصل في 27-05-2018 . تم الاسترجاع في 26-05-2018 .
- ↑ "الدوال المتداخلة" . باستخدام مجموعة مترجمات جنو (GCC) . 2018 [2002]. 6.4. مؤرشف من الأصل بتاريخ 27-05-2018 . تم الاطلاع عليه بتاريخ 26-05-2018 .
- ↑ برويل، توماس م. (2013). "الإغلاقات المعجمية للغة C++" (ملف PDF) . مؤرشف (PDF) من الأصل بتاريخ 12 ديسمبر 2017. تم الاطلاع عليه بتاريخ 26 مايو 2018 .
- ↑ والتون، جيفري؛ مانيكو، جيم؛ وول، كيفن (2018-03-02) [2013]. "تحصين سلسلة أدوات C" . مشروع أمان تطبيقات الويب المفتوحة (OWASP). مؤرشف من الأصل في 2018-05-27 . تم الاسترجاع في 2018-03-02 .
- مصطلحات الحوسبة
