ISA와 어셈블리
분기나 점프에 PC 상대 주소 지정을 사용하는 것의 이점으로 올바른 것은?
- A분기 대상이 아무리 멀어도 하나의 명령어로 반드시 닿는다
- B분기 예측이 필요 없어져 파이프라인이 멈추지 않게 된다
- C프로그램을 메모리의 어느 주소에 로드해도 명령어를 고쳐 쓰지 않고 동작시킬 수 있다
정답과 해설 보기
정답: C. 프로그램을 메모리의 어느 주소에 로드해도 명령어를 고쳐 쓰지 않고 동작시킬 수 있다
PC 상대 분기는 '여기서 몇 바이트 앞'이라는 거리로 목적지를 나타내므로, 프로그램 전체를 다른 주소로 옮겨도 거리는 변하지 않아 그대로 동작합니다. 이는 공유 라이브러리 등에서 사용하는 위치 독립 코드(PIC)의 토대가 됩니다. 다만 거리를 나타내는 비트 수에 한계가 있으므로, 멀리 점프할 때는 auipc와 jalr을 조합합니다. 분기 예측의 필요성은 표현 방식과 관계가 없습니다.