Post

Jan 3, 2026

Jan 3, 2026

Today I Learned (TIL)

Rechnerarchitektur

1. Immediate 상수의 12비트 제한

RISC-V의 addi(Add Immediate)와 같은 I-Type 명령어는 상수를 담는 필드가 12비트로 제한되어 있습니다.

  • 표현 범위: $-2^{11}$ ~ $2^{11}-1$ (즉, -2048 ~ 2047) 입니다.
  • $2^{10}$ (1024): 범위 내에 포함되므로 addi a0, a0, 1024 한 줄로 연산이 가능합니다.
  • $2^{11}$ (2048): 최대 범위(2047)를 초과하기 때문에 명령어 하나에 담을 수 없습니다.
    • 해결법: 레지스터에 1을 넣고(addi a1, zero, 1) 이를 왼쪽으로 11번 밀어(slli a1, a1, 11) 2048을 만든 뒤 더해야 합니다.

2. 시프트 명령어(Schiebebefehle)

비트를 이동시킨 후 빈 공간을 어떻게 처리하느냐가 핵심입니다.

종류명령어 (I형/R형)특징 (빈자리 채우기)주요 용도
논리 시프트 (Logical)srli, srl, slli무조건 0으로 채움거듭제곱 곱셈 및 양수 나눗셈
산술 시프트 (Arithmetic)srai, sra부호 비트(Sign bit)를 복사해서 채움음수의 부호를 유지하는 나눗셈
  • I-Type (slli, srli, srai): 시프트할 양($n$)을 명령어에 숫자로 직접 적습니다.
  • R-Type (sll, srl, sra): 다른 레지스터에 저장된 값만큼 비트를 이동시킵니다.

This post is licensed under CC BY 4.0 by the author.