sltiu

sltiu

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

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

الوصف

يجمع sltiu بين slti وsltu. وهو يقارن سجلاً بثابت ويعامل القيمتين كغير موقّعتين. يجمع الاسم الأجزاء: set less than، immediate، unsigned. يكتب النموذج أدناه 1 في rd عندما تكون rs1 أقل من الثابت imm، مع قراءة كلتيهما كأعداد غير سالبة، و0 بخلاف ذلك.

sltiu rd, rs1, imm

كما في صفحة sltu، تعني «غير موقّع» أن البت الأعلى يُحتسب كرقم عادي من أرقام العدد، لذا يمتد النطاق من 0 إلى نحو 4 مليارات. يتعامل sltiu مع فحوص النطاق على القيم التي لا يمكن أن تكون سالبة، مثل اختبار ما إذا كان فهرس أقل من حجم مصفوفة، في تعليمة واحدة.

يسأل السطر أدناه ما إذا كانت القيمة أقل من 1.

sltiu rd, rs, 1

الصفر هو القيمة غير الموقّعة الوحيدة الأقل من 1، لذا تكون النتيجة 1 عندما يكون rs صفراً و0 بخلاف ذلك. يختبر هذا التساوي مع الصفر، والاختصار seqz مبني عليه. ويترتب عليه التساوي بين قيمتين. اعمل XOR على القيمتين، وهو ما يعطي صفراً فقط عندما تتطابقان، ثم اختبر النتيجة مقابل الصفر.

يقول دليل RISC-V إن الثابت يُوسَّع إشارياً أولاً إلى 32 بت ثم يُعامل كعدد غير موقّع. لذلك يصبح الثابت السالب قيمة غير موقّعة كبيرة جداً. ويقدّم الدليل sltiu مع الثابت 1 كطريقة لاختبار الصفر، وهي التعليمة الزائفة seqz.

وكما في slti، تُحمَّل الثوابت التي تتجاوز نطاق 12 بت في سجل باستخدام li وتُقارَن باستخدام sltu.

مثال

li t0, -1
sltiu t1, t0, 5   # t1 = 0 (t0 read as unsigned is huge)