Кіріспе

Жанама тармақ (сондай-ақ есептелген секіру, жанама секіру және тіркеуіш арқылы жанама секіру деп аталады) – кейбір машина тіліндегі нұсқаулар жиынтығында кездесетін бағдарламалық басқару нұсқауларының бір түрі. Тікелей тармақтағыдай келесі орындалатын нұсқаудың мекенжайын көрсетудің орнына, аргумент мекенжайдың қайда сақталғанын анықтайды. Мысалы, "r1 тіркеуіші арқылы жанама секіру" дегеніміз, келесі орындалатын нұсқау r1 тіркеуішіндегі мекенжайда орналасқан. Секундік мекенжай нұсқау орындалғанға дейін белгілі болмайды. Жанама тармақтар жад жатынының мәніне де байланысты болуы мүмкін. Жанама тармақ шартты тармақ жасау үшін, әсіресе көп тармақты тармақ үшін пайдалы болуы мүмкін. Мысалы, бағдарламалық кіріске сәйкес, дерек мәнінің әртүрлі жағдайларын өңдеуге арналған кодқа сілтемелердің секіру кестесінен мән ізделуі мүмкін. Дерек мәні кесте мекенжайына қосылып, нәтиже тіркеуіште сақталады. Содан кейін, осы тіркеуіштің мәніне негізделген жанама секіру жасалуы мүмкін, бұл бағдарламалық басқаруды кіріске сәйкес кодқа тиімді түрде жібереді. Сол сияқты, кіші бағдарламаны шақыру нұсқаулары да жанама болуы мүмкін, кіші бағдарламаның мекенжайы жадта көрсетіледі. Функциялық көрсеткіштер әдетте жанама кіші бағдарлама шақырулары арқылы іске асырылады. Жанама тармақтар "Spectre" шабуылының әсер ететін жерлерінің бірі болды. Шабуылды азайту үшін GCC 8.1 келесі жаңа опцияларды енгізді: mindirect branch=, mfunction return= және mindirect branch register.