ISA와 어셈블리

명령어 길이를 고정 길이로 하는 것의 이점으로 가장 적절한 것은?

  1. A명령어의 경계를 바로 알 수 있어 여러 명령어를 동시에 해독하기 쉽다
  2. B모든 명령어가 가변 길이보다 짧아지므로 프로그램이 반드시 작아진다
  3. C명령어의 종류를 얼마든지 늘릴 수 있다
정답과 해설 보기

정답: A. 명령어의 경계를 바로 알 수 있어 여러 명령어를 동시에 해독하기 쉽다

고정 길이라면 n번째 명령어가 4n 바이트째에서 시작한다고 정해져 있으므로, 한 번에 여러 명령어를 가져와 병렬로 해독할 수 있습니다. 이는 1사이클에 여러 명령어를 발행하는 슈퍼스칼라 CPU에서 특히 유리합니다. 반면 자주 쓰는 명령어를 짧게 표현할 수 없으므로 코드 크기는 가변 길이보다 커지기 쉽습니다. RISC-V의 C 확장은 16비트 명령어를 추가하여 이 약점을 보완합니다.

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

ISA와 어셈블리의 다른 문제

  1. RISC-V 명령어에서는 레지스터를 지정하는 필드(rd, rs1, rs2)가 각각 5비트이다. 그 이유로 올바른 것은?
  2. RISC-V addi 명령어의 즉치값은 12비트 부호 있는 정수이다. 이 즉치값으로 나타낼 수 있는 범위는?
  3. RISC-V에서 12비트 즉치값에 들어가지 않는 32비트 상수(예: 0x12345678)를 레지스터에 넣는 일반적인 방법은?
  4. RISC-V에서 상수 0x12345FFF를 lui와 addi의 2개 명령어로 만들 때 올바른 조합은?
  5. RISC-V의 auipc 명령어(add upper immediate to PC)의 동작으로 올바른 것은?