ISA와 어셈블리

RISC-V의 조건 분기 명령어 'beq a0, a1, label'에서 분기 대상 label의 주소는 어떻게 표현되는가?

  1. A분기 대상의 주소 자체(32비트)가 명령어 안에 들어 있다
  2. B분기 명령어 자신의 주소(PC)로부터의 거리로서 명령어 안에 들어 있다
  3. C분기 대상의 주소를 a1 레지스터에 넣어 두어야 한다
정답과 해설 보기

정답: B. 분기 명령어 자신의 주소(PC)로부터의 거리로서 명령어 안에 들어 있다

RISC-V의 분기 명령어는 분기 대상을 '현재 명령어의 주소(PC)에서 몇 바이트 앞인가'라는 부호 있는 거리로 나타냅니다. 이를 PC 상대 주소 지정이라고 합니다. 분기 대상은 대체로 가까이에 있으므로 짧은 거리로 충분하여 32비트 명령어 안에 들어갑니다. 또한 프로그램 전체를 다른 주소에 배치해도 거리는 변하지 않으므로 고쳐 쓰지 않고도 동작한다는 이점이 있습니다.

이 분야 연습하기 분야로 돌아가기

ISA와 어셈블리의 다른 문제

  1. 분기나 점프에 PC 상대 주소 지정을 사용하는 것의 이점으로 올바른 것은?
  2. RISC-V의 기본 명령어와 x86 명령어의 길이에 대해 올바른 것은?
  3. 명령어 길이를 고정 길이로 하는 것의 이점으로 가장 적절한 것은?
  4. RISC-V 명령어에서는 레지스터를 지정하는 필드(rd, rs1, rs2)가 각각 5비트이다. 그 이유로 올바른 것은?
  5. RISC-V addi 명령어의 즉치값은 12비트 부호 있는 정수이다. 이 즉치값으로 나타낼 수 있는 범위는?