srl

srl

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

يغطي lyszt.net srl وتعليمات 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

الوصف

srl ينقل البتات إلى اليمين، وهو عكس ما يفعله sll. تشير هذه الأحرف إلى shift right logical (الإزاحة المنطقية لليمين). يأخذ هذا الشكل بتات rs1، وينقلها إلى اليمين بمقدار العدد الموجود في rs2، ويخزّن النتيجة في rd.

srl rd, rs1, rs2

أي بتات تُدفع بعد الطرف الأيمن تُفقد، وتملأ الأصفار المواضع الخالية على اليسار.

هذا الملء بالأصفار يفسّر كلمة logical. الإزاحة لليمين تُنصّف القيمة، لذا فإن الإزاحة بمقدار 1 تقسم على 2 والإزاحة بمقدار 3 تقسم على 8. يُطرح الباقي، بما يطابق القسمة الصحيحة. يقسم srl عددًا غير مُوقّع على قوة من اثنين بسرعة.

توجد تعليمتان للإزاحة لليمين، والفرق هو ما يدخل في البتات العليا المفرغة. يضع srl أصفارًا هناك. أما نظيرها sra فينسخ بت الإشارة إلى تلك المواضع، مما يحافظ على إشارة الأعداد السالبة. اختر srl لنمط بتات خام أو لقيمة لا يمكن أن تكون سالبة. أما على قيمة مُوقّعة قد تكون سالبة، فإن srl ينتج عددًا موجبًا كبيرًا، وsra هي التعليمة الصحيحة في تلك الحالة.

وفقًا لدليل RISC-V، يشغل عدد الإزاحة البتات الخمس المنخفضة من السجل rs2. تمتد تلك البتات الخمس من 0 إلى 31 موضعًا، لذا تُهمل البتات المتبقية من rs2. يسمّي الدليل srl إزاحة منطقية لليمين، وهي تُدخل أصفارًا في الأعلى.

عندما يكون عدد الإزاحة ثابتًا، استخدم الصيغة الفورية srli.

مثال

li t0, -8
li t1, 1
srl t2, t0, t1   # t2 = 2147483644 (zero-filled)