sll
يغطي lyszt.net sll وتعليمات RISC-V الأخرى بمزيد من التفصيل.
تنسيق الترميز
الوصف
sll ينقل بتات الرقم إلى اليسار. يحتفظ السجل بـ 32 بتة في صف واحد، ويحرك الإزاحة الصف بأكمله يسارًا أو يمينًا بعدد من المواضع. الاسم اختصار لـ shift left logical. في الصيغة أدناه، تُزاح القيمة في rs1 إلى اليسار بعدد المواضع المعطى في rs2، وتذهب النتيجة إلى rd.
sll rd, rs1, rs2
عندما تتحرك البتات إلى اليسار، تملأ الأصفار المواضع الفارغة على اليمين، وتُسقط البتات التي تُدفع خارج الحافة اليسرى.
الإزاحة إلى اليسار بموضع واحد تضاعف الرقم، بنفس الطريقة التي يضاعف بها إلحاق 0 برقم عشري قيمته عشر مرات. الإزاحة بمقدار 1 تضرب في 2، والإزاحة بمقدار 2 تضرب في 4، والإزاحة بمقدار 3 تضرب في 8. تكلف الإزاحة المعالج أقل من الضرب، مما يجعلها الطريق السريع للضرب في قوى العدد اثنين. يعتمد الوصول إلى المصفوفات على ذلك، لأن عنوان كل عنصر يبعد عن السابق بعدد ثابت من البايتات هو قوة للعدد اثنين.
وفقًا لدليل RISC-V، يُحتفظ بمقدار الإزاحة في البتات الخمس المنخفضة من السجل rs2. تغطي خمس بتات المدى من 0 إلى 31 موضعًا، لذا لا تأثير لبقية بتات rs2. يسمي الدليل sll إزاحة يسارية منطقية، أي أن الأصفار تدخل البتات المنخفضة.
في هذه الصيغة يأتي مقدار الإزاحة من سجل، وهو مناسب لمقدار يُحسب أثناء تشغيل البرنامج. استخدم slli لمقدار ثابت. يُزاح المثال 3 إلى اليسار بموضعين، فيُضرب في 4 ليعطي 12.
مثال
li t0, 3 li t1, 2 sll t2, t0, t1 # t2 = 12
