srai
lyszt.net은 srai 및 기타 RISC-V 명령어를 더 자세히 다룹니다.
인코딩 형식
설명
srai는 비트를 고정된 양만큼 오른쪽으로 이동하고 비어 있는 상위 비트 위치에 부호 비트를 복사하므로 음수는 음수로 유지됩니다. 이는 sra의 상수량 형태이며, 그래서 채우기가 부호를 보존합니다. i는 즉치(immediate), 즉 명령어에 인코딩된 상수를 의미합니다.
srai의 구문은 아래에 나와 있으며, amount는 0에서 31 사이의 상수입니다.
srai rd, rs1, amount
한 자리 오른쪽 시프트는 수를 절반으로 만들고 부호는 그대로 둡니다. 따라서 srai는 부호 있는 수를 2의 거듭제곱으로 나눕니다. 다음 줄은 부호 있는 값을 8로 나누며, 양수와 음수 입력 모두에 해당합니다.
srai t0, t0, 3
srai는 더 음수인 값 쪽으로 내림합니다. -7을 1만큼 오른쪽으로 시프트하면 -4가 되지만, 제수가 2인 div는 0 쪽으로 반올림하므로 -3이 됩니다. 둘은 음이 아닌 수와 나머지가 없는 나눗셈에서는 일치합니다. 음수가 나머지를 남길 때만 1만큼 다릅니다. 그래픽, 오디오, 신호 코드는 일반적으로 내림 방향 반올림이 필요합니다.
RISC-V 매뉴얼은 상수 시프트를 표준 명령어 레이아웃 중 하나인 I-type 형식의 특수화로 인코딩합니다. 시프트 양은 즉치 필드의 하위 5비트를 차지하고, 명령어의 비트 30이 두 오른쪽 시프트를 구분합니다. srai는 산술 오른쪽 시프트를 수행하며, 원래 부호 비트가 비어 있는 상위 비트를 채웁니다.
네 가지 시프트 중에서 srai는 부호 있는 수의 나눗셈을 처리하고 srli는 원시 비트나 결코 음수가 되지 않는 수를 처리합니다. i가 없는 형태인 sra와 srl은 프로그램 실행 중에 계산되는 시프트 거리를 받습니다.
예시
li t0, -8 srai t1, t0, 1 # t1 = -4 (sign-filled)
