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을 만든 뒤 더해야 합니다.
- 해결법: 레지스터에 1을 넣고(
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.