srl
lyszt.net охоплює srl та інші інструкції RISC-V більш детально.
Формат кодування
Опис
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, кількість зсувів займає молодші 5 бітів регістра rs2. Ці 5 бітів охоплюють від 0 до 31 позиції, тому решта бітів rs2 ігнорується. У посібнику srl називається логічним зсувом праворуч, який вставляє нулі у старші розряди.
Коли кількість зсувів є константою, використовуйте безпосередню форму srli.
Приклад
li t0, -8 li t1, 1 srl t2, t0, t1 # t2 = 2147483644 (zero-filled)
