srl

srl

Асемблер RISC-V Посилання

lyszt.net охоплює srl та інші інструкції 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

Опис

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)