srli
lyszt.net охоплює srli та інші інструкції RISC-V більш детально.
Формат кодування
Опис
srli зсуває біти вправо на фіксовану величину та заповнює звільнені верхні позиції 0. Це форма зі сталою величиною для srl, яка описує механіку та заповнення нулями. Літера i означає immediate — константу, закодовану в інструкції.
Форма srli наведена нижче, де amount — фіксоване число від 0 до 31.
srli rd, rs1, amount
Зсув вправо зменшує число вдвічі за кожну переміщену позицію, а заповнення нулями трактує значення як ніколи не від'ємне, тому srli ділить беззнакове число на степінь двійки без остачі. Наступний рядок ділить t0 на чотири.
srli t0, t0, 2
У поєднанні з маскувальним AND, srli видобуває одне поле з упакованого значення. Зсуньте поле вниз до молодших бітів, потім застосуйте andi, щоб залишити лише його біти. Читання другого байта слова потребує зсуву вправо на 8 та AND з 0xff.
Посібник RISC-V кодує зсуви з константою як спеціалізацію формату I-типу, одного зі стандартних форматів інструкцій. Величина зсуву займає молодші 5 бітів поля immediate, а біт 30 інструкції розрізняє два зсуви вправо. srli виконує логічний зсув вправо, і в старші біти входять 0.
srli завжди заповнює нулями. Це підходить для необроблених бітових шаблонів і чисел, які ніколи не бувають від'ємними. Для знакового значення, яке може бути від'ємним, нулі перезаписують маркер знака. Знакове ділення на степінь двійки використовує srai. Вибір між ними відображає те, як ви читаєте біти регістра.
Приклад
li t0, -8 srli t1, t0, 1 # t1 = 2147483644 (zero-filled)
