slt
يغطي lyszt.net slt وتعليمات RISC-V الأخرى بمزيد من التفصيل.
تنسيق الترميز
الوصف
يقارن slt بين عددين ويخزّن النتيجة على هيئة 1 أو 0. يشير الاسم إلى set less than. يختبر النموذج أدناه ما إذا كان rs1 أصغر من rs2. إذا نجح الاختبار، تكتب التعليمة 1 في سجل الوجهة rd. وإذا فشل، تكتب 0.
slt rd, rs1, rs2
يمكن استخدام المقارنة بطريقتين. تقفز تعليمة تفريع بناءً عليها. وبدلاً من ذلك، يمكن تخزين الإجابة بنعم أو لا على هيئة رقم، 1 للصحيح و0 للخطأ، واستخدامها لاحقًا. يتولى slt عملية التخزين. تمثّل لغة التجميع الصحيح والخطأ بالقيمة المخزّنة 1 أو 0، ويمكن جمع هذه القيمة أو قناعتها أو دمجها مثل أي رقم آخر.
تعامل المقارنة القيم على أنها مُوقّعة، لذا قد تكون سالبة، وتُعدّ -1 أصغر من 0. أما التعليمة المرتبطة sltu فتعاملها على أنها غير مُوقّعة، مما يغيّر الإجابة بالنسبة إلى القيم الكبيرة والقيم التي تبدو سالبة.
يصف دليل RISC-V كلاً من slt وsltu بأنهما المقارنتان المُوقّعة وغير المُوقّعة التي تكتبان 1 في rd إذا كان rs1 أصغر من rs2، و0 بخلاف ذلك. كما يستخدم slt في فحص التجاوز لجمع الأعداد المُوقّعة العام. بعد الجمع، يسجّل السطر الثاني أدناه ما إذا كان المعامل الثاني سالبًا، ويسجّل السطر الثالث ما إذا كان المجموع أصغر من المعامل الأول، ويقفز السطر الأخير عندما تختلف الإجابتان.
add t0, t1, t2 slti t3, t2, 0 slt t4, t0, t1 bne t3, t4, overflow
والمنطق هو أنه لا ينبغي أن يكون المجموع أصغر من أحد المعاملين إلا عندما يكون المعامل الآخر سالبًا.
لا توجد تعليمة set greater than. لاختبار ما إذا كان a أكبر من b، بدّل المعاملين واسأل ما إذا كان b أصغر من a. يقارن المثال بين 3 و9. بما أن 3 أصغر من 9، تُضبط t2 على 1.
مثال
li t0, 3 li t1, 9 slt t2, t0, t1 # t2 = 1
المصادر
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.2, Integer Register-Register Instructions, page 29.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
