slti

slti

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

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

الوصف

يقارن slti سجلاً بثابت ويكتب 1 أو 0 في الوجهة. وهو slt، الذي يقارن سجلين ويخزّن النتيجة كرقم (انظر تلك الصفحة)، مع توفير القيمة الثانية كقيمة فورية. القيمة الفورية ثابت مُرمَّز في التعليمة، والحرف i في الاسم يدل عليها.

يظهر شكل slti أدناه. عندما تكون القيمة في rs1 أقل من الثابت imm، يتلقى rd القيمة 1، وإلا يتلقى 0.

slti rd, rs1, imm

المقارنة مُوقَّعة، لذا يُقرأ كل من السجل والثابت كأرقام قد تكون سالبة.

استخدمه لمقارنة متغير بعتبة ثابتة معروفة مسبقاً. التحقق مما إذا كان فهرس أقل من 10 أو ما إذا كانت قيمة قد انخفضت تحت حد معين يتطلب تعليمة slti واحدة. السطر التالي يسأل عما إذا كان t0 أقل من صفر، وهو يختبر وجود قيمة سالبة ويضبط t1 على 1 للقيم السالبة و0 خلاف ذلك.

slti t1, t0, 0

يقول دليل RISC-V إن slti يضع 1 في rd إذا كان rs1 أقل من القيمة الفورية الممتدة بالإشارة عندما يُعامل كلاهما كأرقام موقعة، و0 خلاف ذلك. يستخدمه فحص التجاوز في الجمع الموقّع العام، كما هو موضح في صفحة slt، لتسجيل ما إذا كان المعامل سالباً.

يتراوح الثابت من -2048 إلى 2047. للمقارنة بقيمة أكبر، حمّل الثابت في سجل باستخدام li واستخدم slt. يرفض المُجمِّع ثابتاً خارج النطاق مع رسالة خطأ.

مثال

li t0, 3
slti t1, t0, 5   # t1 = 1 (3 < 5)