ISA와 어셈블리

RISC-V(RV32I)에서 'addi t0, zero, -1'을 실행한 후 t0에 들어 있는 32비트 값은?

  1. A0xFFFFFFFF
  2. B0x00000FFF
  3. C0x80000001
정답과 해설 보기

정답: A. 0xFFFFFFFF

즉치값 -1은 12비트로는 0xFFF로 표현됩니다. addi는 이를 32비트로 부호 확장, 즉 최상위 비트의 1을 위쪽 자리 전부에 복사하므로 0xFFFFFFFF가 되며 2의 보수로 -1을 나타냅니다. 부호 확장 덕분에 음수 즉치값을 더하는 것만으로 뺄셈을 할 수 있습니다. 상위를 0으로 채우면 0x00000FFF=4095가 되어 의미가 달라집니다.

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

ISA와 어셈블리의 다른 문제

  1. 메모리 상의 1바이트에 0x80이 들어 있다. RISC-V의 lb 명령어와 lbu 명령어로 이 바이트를 32비트 레지스터에 읽어 들였을 때의 값의 조합으로 올바른 것은?
  2. 조건 분기 구조에 대해 RISC-V와 x86의 차이로 올바른 것은?
  3. RISC-V 명령어 'slt t0, a0, a1'의 동작으로 올바른 것은?
  4. 위의 RISC-V 코드를 실행 완료했을 때 t0의 값은 얼마인가?
  5. RISC-V의 조건 분기 명령어(B 형식)는 분기 대상까지의 거리를 13비트 부호 있는 바이트 수로 나타내며, 그 최하위 비트는 항상 0이므로 명령어에 넣지 않는다. 분기 명령어가 직접 닿는 범위로 대략 올바른 것은?