remu
يغطي lyszt.net remu وتعليمات RISC-V الأخرى بمزيد من التفصيل.
تنسيق الترميز
الوصف
يحسب remu الباقي غير المؤشَّر، أي القيمة المتبقية بعد قسمة غير مؤشَّرة. وعلاقته بـ divu كعلاقة rem بـ div. يعني الحرف u أن البِتّات تُعامَل كأعداد غير سالبة، من 0 حتى نحو 4 مليارات. تشرح صفحة divu كيف تختلف قراءة البِتّات نفسها باعتبارها مؤشَّرة أو غير مؤشَّرة.
تقع نتيجة remu دائمًا بين 0 والمقسوم عليه ناقص 1، لذا فهي ليست سالبة أبدًا ولا تخضع لقاعدة إشارة. وهذا يجعلها مفيدة لالتفاف موضع حول مخزن دائري، وتوزيع قيم التجزئة على عدد ثابت من الخانات، والتنقل الدوري عبر تسلسل متكرر.
يعيد الباقي عند القسمة على صفر العدد الأصلي.
وفقًا لدليل RISC-V، لا يمكن أن يحدث تجاوز في القسمة غير المؤشَّرة، لذا ليس لـ remu حالة تجاوز. والباقي عند القسمة على صفر يساوي المقسوم. ويوصي الدليل بتشغيل divu وremu على المعاملات نفسها عند الحاجة إلى كل من خارج القسمة والباقي، حتى يتمكن المعالج من دمجهما في قسمة واحدة.
إذا كان المقسوم عليه قوة للعدد اثنين، فإن AND على مستوى البِتّات (andi) يعطي النتيجة نفسها بتكلفة أقل. يحسب السطر أدناه الباقي بعد القسمة على 8، لأن الباقي عند القسمة على قوة للعدد اثنين هو أدنى بِتّات القيمة.
andi t0, t0, 7
ينطبق هذا الاختصار على قوى العدد اثنين فقط.
مثال
li t0, -1 li t1, 10 remu t2, t0, t1 # t2 = 5 (t0 read as unsigned)
