slli

slli

تجميع RISC-V مرجع

يغطي lyszt.net slli وتعليمات RISC-V الأخرى بمزيد من التفصيل.

تنسيق الترميز

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

الوصف

slli يزيح البتات إلى اليسار بمقدار ثابت. تطابق هذه العملية sll: تنزلق البتات إلى اليسار، وتملأ الأصفار الجانب الأيمن، وتُفقد البتات التي تتجاوز الحافة اليسرى، وكل منزلة يتم نقلها تضاعف القيمة (تغطي صفحة sll الآلية). تحتفظ التعليمة بمسافة الإزاحة كثابت، لذا لا يوفرها أي سجل. تعني i فوري (immediate)، وهو المصطلح المستخدم للثابت المكتوب في التعليمة.

يظهر شكل slli أدناه، حيث amount هو رقم ثابت من 0 إلى 31.

slli rd, rs1, amount

يزيح السطر التالي t0 إلى اليسار بمقدار 3 منازل، مما يضربه في 8.

slli t1, t0, 3

تجعل المصفوفات هذه التعليمة شائعة. تشغل القيمة 32-بت في المصفوفة 4 بايتات، لذا يقع العنصر رقم i على مسافة i مضروبة في 4 بايتات من البداية، وإزاحة لليسار بمقدار 2 تضرب في 4. النمط المعتاد يزيح الفهرس لإنتاج إزاحة بايت، ويضيف عنوان بداية المصفوفة، ثم يحمّل القيمة. يساعد التعرف على تسلسل الإزاحة والجمع والتحميل هذا عند قراءة لغة التجميع التي كتبها الآخرون.

يُرمّز دليل RISC-V الإزاحات بواسطة ثابت كتخصيص لصيغة النوع I، وهي أحد تخطيطات التعليمات القياسية. يحمل rs1 المعامل المراد إزاحته، وتحمل البتات الخمس السفلية من حقل القيمة الفورية مقدار الإزاحة. ينفذ slli إزاحة منطقية لليسار، وتدخل الأصفار إلى البتات السفلية.

استخدم slli عندما تكون مسافة الإزاحة معروفة أثناء كتابة الكود. استخدم sll عندما يُحسب المقدار أثناء تشغيل البرنامج. يزيح المثال 5 إلى اليسار بمقدار 3، مما يعطي 5 مضروبة في 8، أي 40.

مثال

li t0, 5
slli t1, t0, 3   # t1 = 5 << 3 = 40  (5 * 8)