ISA와 어셈블리
RISC-V의 조건 분기 명령어 'beq a0, a1, label'에서 분기 대상 label의 주소는 어떻게 표현되는가?
- A분기 대상의 주소 자체(32비트)가 명령어 안에 들어 있다
- B분기 명령어 자신의 주소(PC)로부터의 거리로서 명령어 안에 들어 있다
- C분기 대상의 주소를 a1 레지스터에 넣어 두어야 한다
정답과 해설 보기
정답: B. 분기 명령어 자신의 주소(PC)로부터의 거리로서 명령어 안에 들어 있다
RISC-V의 분기 명령어는 분기 대상을 '현재 명령어의 주소(PC)에서 몇 바이트 앞인가'라는 부호 있는 거리로 나타냅니다. 이를 PC 상대 주소 지정이라고 합니다. 분기 대상은 대체로 가까이에 있으므로 짧은 거리로 충분하여 32비트 명령어 안에 들어갑니다. 또한 프로그램 전체를 다른 주소에 배치해도 거리는 변하지 않으므로 고쳐 쓰지 않고도 동작한다는 이점이 있습니다.