srli
lyszt.net은 srli 및 기타 RISC-V 명령어를 더 자세히 다룹니다.
인코딩 형식
설명
srli는 비트를 고정된 양만큼 오른쪽으로 이동하고 비워진 상위 위치에 0을 채웁니다. 이는 srl의 상수량 형태이며, srl은 그 동작 원리와 0 채우기를 다룹니다. i는 즉시값(immediate), 즉 명령어에 인코딩된 상수를 의미합니다.
srli의 형식은 아래에 나와 있으며, amount는 0에서 31까지의 고정된 숫자입니다.
srli rd, rs1, amount
오른쪽 시프트는 이동하는 자리마다 숫자를 한 번씩 절반으로 만들고, 0 채우기는 값을 결코 음수가 아닌 것으로 취급하므로, srli는 부호 없는 숫자를 2의 거듭제곱으로 나누어 나머지가 없게 합니다. 다음 줄은 t0를 4로 나눕니다.
srli t0, t0, 2
마스킹 AND와 결합하면, srli는 패킹된 값에서 하나의 필드를 추출합니다. 필드를 최하위까지 시프트한 다음, andi를 적용하여 그 비트만 유지합니다. 워드의 두 번째 바이트를 읽으려면 8만큼 오른쪽 시프트하고 0xff와 AND 연산을 합니다.
RISC-V 매뉴얼은 상수 시프트를 표준 명령어 레이아웃 중 하나인 I-type 형식의 특수화로 인코딩합니다. 시프트 양은 즉시값 필드의 하위 5비트를 차지하고, 명령어의 비트 30이 두 오른쪽 시프트를 구분합니다. srli는 논리 오른쪽 시프트를 수행하며, 0이 상위 비트로 들어갑니다.
srli는 항상 0으로 채웁니다. 이는 원시 비트 패턴과 결코 음수가 되지 않는 숫자에 적합합니다. 음수가 될 수 있는 부호 있는 값에서는 0이 부호 표시를 덮어씁니다. 2의 거듭제곱으로 하는 부호 있는 나눗셈에는 srai를 사용합니다. 둘 중 어느 것을 선택할지는 레지스터의 비트를 어떻게 읽는지를 반영합니다.
예시
li t0, -8 srli t1, t0, 1 # t1 = 2147483644 (zero-filled)
