Кіріспе

Байланыс тіркелімі (қысқаша LR) – субпрограмма шақырылымы аяқталғанда қайтаруға арналған мекенжайды сақтайтын тіркелім. Бұл, қайтару мекенжайларын шақыру стегінде сақтаудың дәстүрлі схемасынан тиімдірек, кейде оны машина стегі деп атайды. Байланыс тіркелімі стекті сақтайтын жадқа жазу және оқу операцияларын қажет етпейді, бұл кішкентай ішкі бағдарламаларды көп рет шақыру кезінде орындалу уақытының айтарлықтай бөлігін үнемдеуге мүмкіндік береді. IBM POWER архитектурасы және оның PowerPC және Power ISA мұрагерлері арнайы байланыс тіркеліміне ие, оған қосалқы бағдарлама шақыру нұсқаулары қайтару мекенжайын жазады. Басқа кейбір нұсқаулар жиынтықтарында, мысалы ARM архитектурасында, SPARC және OpenRISC, қосалқы бағдарлама шақыру нұсқаулары қайтару мекенжайын белгілі бір жалпы мақсаттағы тіркелімге жазады, сондықтан бұл тіркелім нұсқаулар жиынтығы архитектурасымен байланыс тіркелімі ретінде белгіленеді. PA RISC, RISC V және IBM System/360 және оның мұрагерлері, соның ішінде z/Architecture сияқты басқаларында, қосалқы бағдарлама шақыру нұсқаулығы қайтару мекенжайын кез келген жалпы мақсаттағы тіркелімде сақтай алады; әдетте, байланыс тіркелімі ретінде қолданылатын белгілі бір тіркелім таңдалады. ARMv7 архитектурасы жалпы мақсаттағы R14 тіркелімін байланыс тіркелімі ретінде пайдаланады, OpenRISC r9 тіркелімін, ал SPARC "шығыс тіркелімі 7" немесе o7 тіркелімін қолданады. Кейбір архитектураларда екі байланыс тіркелімі бар: көптеген қосалқы бағдарлама шақырулары үшін стандартты "тармақ байланыс тіркелімі" және үзілістер үшін арнайы "үзіліс байланыс тіркелімі". Мұндай архитектуралардың бірі – ARCv2 (ARCompact архитектурасының 2-ші нұсқасын пайдаланатын ARC процессорлары), ол үзіліс байланыс тіркелімі үшін r29 және тармақ байланыс тіркелімі үшін r31 жалпы мақсаттағы тіркелімдерін қолданады. Мұндай платформаларда "байланыс тіркеліміне" сілтеме жасау, әдетте тармақ байланыс тіркеліміне сілтеме жасау болып табылады. ARCompact және ARCtangent архитектураларына негізделген ескі ARC процессорларында үш байланыс тіркелімі болды: екі үзіліс байланыс тіркелімі (ILINK) және бір тармақ байланыс тіркелімі (BLINK). Екі үзіліс байланыс тіркелімі ILINK1 (1-деңгейлі (төмен басымдылығы бар) маскаланған үзілістер үшін) және ILINK2 (2-деңгейлі (орта басымдылығы бар) маскаланған үзілістер үшін) болды. Бұл архитектураларда r29 1-деңгейлі үзіліс байланыс тіркелімі, r30 2-деңгейлі үзіліс байланыс тіркелімі, ал r31 тармақ байланыс тіркелімі ретінде пайдаланылды. ILINK1 және ILINK2 ARC 700 процессорларында пайдаланушы режимінде қолжетімді болмады. Байланыс тіркелімін пайдалану, ол арнайы тіркелім немесе жалпы мақсаттағы тіркелім болсын, жапырақ емес қосалқы бағдарламаларды жылдам шақыруға мүмкіндік береді. Қосалқы бағдарлама жапырақ емес болғанда, қайтару мекенжайын тіркелімге жіберу, мысалы, аргументтері қандай да бір жолмен қайта реттелген басқа қосалқы бағдарламаны шақыру мақсатын ғана білдіретін қосалқы бағдарлама үшін, тиімдірек кодты жасауға әкелуі мүмкін. Басқа қосалқы бағдарламалар да байланыс тіркелімін пайдаланудан пайда көреді, өйткені оны шақырушы пайдаланатын басқа тіркелімдермен бірге сақтауға болады. Мысалы, ARM қосалқы бағдарламасы тіркелімдерді 4, 7 және LR байланыс тіркелімін бір STMDB SP!, {R4 R7, LR} нұсқаумен сақтайды, барлық қажетті жад жазуларын бірден орындайды.