ISA와 어셈블리

RISC-V addi 명령어의 즉치값은 12비트 부호 있는 정수이다. 이 즉치값으로 나타낼 수 있는 범위는?

  1. A0~4095
  2. B-2048~2047
  3. C-4096~4095
정답과 해설 보기

정답: B. -2048~2047

12비트 2의 보수로 나타낼 수 있는 것은 -2의 11제곱=-2048부터 2의 11제곱-1=2047까지입니다. 즉치값은 계산 전에 32비트(RV64에서는 64비트)로 부호 확장되므로 음수도 그대로 더할 수 있습니다. 이 범위를 넘는 상수를 사용하려면 상위 20비트를 lui 명령어로 설정한 뒤 addi로 하위 12비트를 더하는 등 여러 명령어를 조합합니다.

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

ISA와 어셈블리의 다른 문제

  1. RISC-V에서 12비트 즉치값에 들어가지 않는 32비트 상수(예: 0x12345678)를 레지스터에 넣는 일반적인 방법은?
  2. RISC-V에서 상수 0x12345FFF를 lui와 addi의 2개 명령어로 만들 때 올바른 조합은?
  3. RISC-V의 auipc 명령어(add upper immediate to PC)의 동작으로 올바른 것은?
  4. RISC-V(RV32I)에서 'addi t0, zero, -1'을 실행한 후 t0에 들어 있는 32비트 값은?
  5. 메모리 상의 1바이트에 0x80이 들어 있다. RISC-V의 lb 명령어와 lbu 명령어로 이 바이트를 32비트 레지스터에 읽어 들였을 때의 값의 조합으로 올바른 것은?