jr
زائفيغطي lyszt.net jr وتعليمات RISC-V الأخرى بمزيد من التفصيل.
الوصف
يقفز jr إلى عنوان مخزَّن في سجل. الاسم اختصار لـ jump register. يقفز j إلى تسمية ثابتة مكتوبة في الشيفرة. يقفز jr إلى أي عنوان يحمله سجل، وهو عنوان يحسبه البرنامج أثناء تشغيله. ولا يحفظ عنوان عودة.
jr تعليمة زائفة للسطر أدناه، أي قفزة عبر سجل تُهمل عنوان العودة (انظر jalr).
jalr zero, rs, 0
جدول القفز هو مصفوفة في الذاكرة تحمل عناوين عدة روتينات، ويُستخدم jr معه. لاختيار الروتين رقم i، يحسب البرنامج خانته في الجدول، ويحمّل العنوان المخزَّن هناك في سجل، ويستخدم jr للقفز إليه. فبحث واحد وقفزة واحدة يحلّان محل سلسلة طويلة من المقارنات (هل هي الحالة 0، أم الحالة 1، أم الحالة 2 وهكذا)، مهما كان عدد الحالات. وعبارات switch الكثيفة والحلقة الداخلية للمفسِّر توزّع بهذه الطريقة.
يُرمّز دليل RISC-V القفزات غير المباشرة غير المشروطة البسيطة على أنها jalr مع ضبط rd على x0. ويشير إلى أن jalr لا يعامل قيمته الفورية كمضاعف لـ 2 بايت، بخلاف التفريعات الشرطية، وإلى أن معظم استخدامات jalr تكون بقيمة فورية صفرية أو تأتي بعد lui أو auipc.
العودة من دالة هي قفزة إلى العنوان الموجود في ra، لذا فإن ret هي jr ra باسم آخر. وتختلف مجموعة تعليمات القفز في مصدر العنوان وما إذا كان عنوان العودة يُحفظ.
يوسّع إلى
jalr zero, rs, 0
يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.
مثال
la t0, target jr t0 # jump to the address held in t0
