ISA와 어셈블리
RISC-V의 조건 분기 명령어(B 형식)는 분기 대상까지의 거리를 13비트 부호 있는 바이트 수로 나타내며, 그 최하위 비트는 항상 0이므로 명령어에 넣지 않는다. 분기 명령어가 직접 닿는 범위로 대략 올바른 것은?
- A분기 명령어에서 앞뒤로 약 4KiB
- B분기 명령어에서 앞뒤로 약 1MiB
- C메모리 전체 어디에나 닿는다
정답과 해설 보기
정답: A. 분기 명령어에서 앞뒤로 약 4KiB
13비트 부호 있는 값은 -4096~+4095를 나타낼 수 있지만, 명령어는 2바이트 단위로 배치되므로 최하위 비트는 항상 0이며 범위는 -4096~+4094바이트입니다. 최하위 비트를 생략함으로써 같은 필드 크기로 2배 범위에 닿습니다. 이보다 먼 분기는 조건을 반전시킨 짧은 분기로, 멀리 닿는 jal(약 ±1MiB)을 건너뛰는 형태로 어셈블러가 고쳐 씁니다.