slti
lyszt.net охоплює slti та інші інструкції RISC-V більш детально.
Формат кодування
Опис
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)
Посилання
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.1, Integer Register-Immediate Instructions, pages 28 to 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.
