sll
lyszt.net охоплює sll та інші інструкції RISC-V більш детально.
Формат кодування
Опис
sll переміщує біти числа вліво. Регістр містить 32 біти в ряд, а зсув переміщує весь ряд вліво або вправо на певну кількість позицій. Назва означає shift left logical (логічний зсув вліво). У наведеній нижче формі значення в rs1 зсувається вліво на кількість позицій, указану в rs2, а результат записується в rd.
sll rd, rs1, rs2
Коли біти рухаються вліво, нулі заповнюють порожні позиції справа, а біти, виштовхнуті за лівий край, відкидаються.
Зсув вліво на одну позицію подвоює число, так само як додавання 0 до десяткового числа множить його на десять. Зсув на 1 множить на 2, зсув на 2 множить на 4, а зсув на 3 множить на 8. Зсув коштує процесору менше, ніж множення, що робить його швидким шляхом до множення на степені двійки. Доступ до масивів покладається на це, оскільки адреса кожного елемента лежить на фіксованій кількості байтів, що є степенем двійки, далі за попередній.
Згідно з посібником RISC-V, величина зсуву зберігається в молодших 5 бітах регістра rs2. П'ять бітів охоплюють від 0 до 31 позиції, тому решта бітів rs2 не має впливу. Посібник називає sll логічним зсувом вліво, що означає, що нулі входять у молодші біти.
У цій формі величина зсуву береться з регістра, що підходить для величини, обчисленої під час виконання програми. Використовуйте slli для фіксованої величини. У прикладі число 3 зсувається вліво на 2 позиції, множачись на 4, що дає 12.
Приклад
li t0, 3 li t1, 2 sll t2, t0, t1 # t2 = 12
