ISA와 어셈블리

RISC-V의 C 확장(압축 명령어)의 주된 목적은?

  1. A데이터를 압축하여 메모리 사용량을 줄이는 명령어를 추가한다
  2. BC 언어 프로그램을 직접 실행할 수 있게 한다
  3. C자주 쓰는 명령어를 16비트로 표현하여 프로그램 크기를 줄인다
정답과 해설 보기

정답: C. 자주 쓰는 명령어를 16비트로 표현하여 프로그램 크기를 줄인다

C 확장은 자주 쓰는 명령어를 짧은 형태로 한정한 16비트 명령어로 표현합니다. 예를 들어 'addi sp, sp, -16'이나 작은 오프셋의 lw·sw입니다. 32비트 명령어와 섞어 쓸 수 있으며 코드 크기가 대략 25~30% 줄어듭니다. 프로그램이 작으면 한정된 플래시 메모리에 들어가기 쉽고 명령어 캐시에도 많이 들어가므로, 임베디드 기기에서도 고성능 CPU에서도 도움이 됩니다.

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

ISA와 어셈블리의 다른 문제

  1. M 확장이 없는 RV32I CPU용으로 C 언어의 'a * b'(int끼리의 곱셈)를 컴파일하면 일반적으로 어떻게 되는가?
  2. 예전 MIPS 등에 있었던 분기 지연 슬롯(분기 명령어 직후의 1개 명령어는 분기 여부와 관계없이 실행되는 규칙)에 대해 올바른 것은?
  3. 64비트 RV64I에서 lw 명령어를 실행하면 읽어 들인 32비트 값은 64비트 레지스터에 어떻게 들어가는가?
  4. ABI(애플리케이션 바이너리 인터페이스)에 대한 설명으로 올바른 것은?
  5. C 언어의 함수 포인터를 사용한 호출 '(*fp)(x)'는 RISC-V에서 일반적으로 어떤 명령어로 이루어지는가?