رابط التسجيل
سجل الربط ( LR اختصارًا) هو سجل يحتوي على عنوان العودة عند اكتمال استدعاء روتين فرعي . هذه الطريقة أكثر كفاءة من الطريقة التقليدية لتخزين عناوين العودة في مكدس الاستدعاءات ، والذي يُسمى أحيانًا مكدس الآلة. لا يتطلب سجل الربط عمليات كتابة وقراءة من الذاكرة التي تحتوي على المكدس، مما يوفر نسبة كبيرة من وقت التنفيذ عند استدعاء الروتينات الفرعية الصغيرة بشكل متكرر.
تحتوي بنية IBM POWER ، وخلفائها PowerPC و Power ISA ، على سجل ارتباط خاص، حيث تضع تعليمات استدعاء الروتين الفرعي عنوان العودة.
في بعض مجموعات التعليمات الأخرى، مثل معمارية ARM و SPARC و OpenRISC ، تضع تعليمات استدعاء الروتينات الفرعية عنوان الإرجاع في سجل عام محدد ، بحيث يُشار إلى هذا السجل في معمارية مجموعة التعليمات باسم سجل الربط. تستخدم معمارية ARMv7 السجل العام R14 كسجل ربط، [ 1 ] [ 2 ] بينما تستخدم OpenRISC السجل r9، [ 3 ] وتستخدم SPARC "سجل الإخراج 7" أو o7 . [ 4 ]
في بعض الأنظمة الأخرى، مثل PA-RISC و RISC-V و IBM System/360 وخلفائها، بما في ذلك z/Architecture ، يمكن لتعليمات استدعاء الروتين الفرعي تخزين عنوان الإرجاع في أي سجل للأغراض العامة؛ وعادة ما يتم اختيار سجل معين، وفقًا للاتفاقية، لاستخدامه كسجل ربط.
تتضمن بعض البنى المعمارية سجلين للربط: سجل ربط فرعي قياسي لمعظم استدعاءات البرامج الفرعية، وسجل ربط مقاطعة خاص للمقاطعات. ومن هذه البنى ARCv2 ( معالجات ARC التي تستخدم الإصدار الثاني من بنية ARCompact)، والتي تستخدم السجلين العامين r29 لربط المقاطعة وr31 لربط الفرع. [ 5 ] [ 6 ] وتشير الإشارات إلى "سجل الربط" في هذه المنصات إلى سجل ربط الفرع.
كانت معالجات ARC السابقة، المبنية على معماريتي ARCompact وARCtangent، تحتوي على ثلاثة سجلات ربط: سجلان لربط المقاطعات (ILINK) وسجل واحد لربط التفرعات (BLINK). [ 5 ] [ 7 ] [ 8 ] [ 9 ] وكان سجلا ربط المقاطعات هما ILINK1 (للمقاطعات القابلة للإخفاء من المستوى 1 (ذات الأولوية المنخفضة)) وILINK2 (للمقاطعات القابلة للإخفاء من المستوى 2 (ذات الأولوية المتوسطة)). في هذه المعماريات، استُخدم r29 كسجل ربط للمقاطعات من المستوى 1، وr30 كسجل ربط للمقاطعات من المستوى 2، وr31 كسجل ربط التفرعات. لم يكن الوصول إلى ILINK1 وILINK2 متاحًا في وضع المستخدم على معالجات ARC 700. [ 7 ]
يُتيح استخدام سجل الربط، سواءً كان سجلًا مُخصصًا أو سجلًا عامًا، استدعاءات أسرع للبرامج الفرعية الطرفية . حتى عندما يكون البرنامج الفرعي غير طرفي، فإن تمرير عنوان الإرجاع في سجل يُمكن أن يُؤدي إلى توليد شيفرة أكثر كفاءة للبرامج الفرعية المُتقطعة (thunks )، على سبيل المثال، لبرنامج فرعي غرضه الوحيد هو استدعاء برنامج فرعي آخر مع إعادة ترتيب الوسائط بطريقة ما. يُمكن للبرامج الفرعية الأخرى الاستفادة من استخدام سجل الربط لأنه يُمكن حفظه في دفعة واحدة مع سجلات أخرى تستخدمها البرامج المُستدعاة - على سبيل المثال، يقوم برنامج فرعي في معالج ARM بدفع السجلات من 4 إلى 7 مع سجل الربط LR، من خلال تعليمة واحدة STMDB SP!, {R4-R7, LR}تُنفذ جميع عمليات كتابة الذاكرة المطلوبة بشكل متسلسل.
مراجع
- ↑ "دليل مرجعي لبنية ARMv7-M" . ARM . تم الاطلاع عليه بتاريخ 24 أغسطس 2022 .
- ↑ "دليل مرجعي لهندسة ARMv7-A و ARMv7-R؛ شركة Arm Holdings" . arm.com . تم الاطلاع عليه بتاريخ 24 أغسطس 2022 .
- ↑ "استخدام as، القسم 9.33.1.2 (ميزات OPENRISC التابعة/أسماء السجلات)" . تم الاطلاع عليه بتاريخ 25 أغسطس 2022 .
- ↑ "ملحق تطبيقات RTEMS SPARC" (ملف PDF) . مايو 2000. مؤرشف من الأصل (ملف PDF) في 8 يناير 2019. تم الاطلاع عليه بتاريخ 19 أبريل 2013 .
- 1 2 "استخدام as، القسم 9.3.2.2 (الميزات التابعة لـ ARC/بناء الجملة/أسماء السجلات)" . تم الاسترجاع في 25 أغسطس 2022 .
- ↑ "ملحق واجهة التطبيق الثنائية لنظام ARCv2 من Synopsys DesignWare ARCv2" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 25 أغسطس 2022. تم الاطلاع عليه بتاريخ 25 أغسطس 2022 .
- 1 2 "مرجع مبرمج بنية مجموعة تعليمات ARCompact" (ملف PDF) . أبريل 2008. مؤرشف (ملف PDF) من الأصل في 9 يونيو 2022. تم الاطلاع عليه في 25 أغسطس 2022 .
- ↑ "مرجع مبرمج ARCtangent-A4" (ملف PDF) . أغسطس 2002. مؤرشف (ملف PDF) من الأصل في 8 مارس 2022. تم الاطلاع عليه في 25 أغسطس 2022 .
- ↑ "لاوترباخ" . مؤرشف من الأصل في 1 مايو 2016. تم الاطلاع عليه في 25 أغسطس 2022 .
- السجلات الرقمية
- قطع غيار أجهزة الكمبيوتر
