UNIT-SPECIFIC ACTIVE LESSON · 2-8

`sll a2,a4,a5` 매칭

shift amount가 register에서 오는 R-type을 찾으세요.

학습 목표: R-type `sll rd,rs1,rs2`를 `slli`와 구분하고 funct/register field로 `sll a2,a4,a5` encoding을 식별한다.
공식 근거 범위: SoSe26 Probeklausur 시험 p6 Aufgabe 2의 `sll a2,a4,a5` 후보·bit열과 공식 해설 p7의 해당 pairing.

왜 이 소문제를 따로 배우는가

두 shift mnemonic은 결과식이 비슷하지만 shift amount의 출처와 format이 다릅니다. register source를 쓰는지 instruction immediate를 쓰는지 구분하면 encoding과 실행 trace를 동시에 해결할 수 있습니다.

이 페이지는 Aufgabe 2의 공통 템플릿이 아니라 2-8 `sll a2,a4,a5` 매칭에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 2 개념 수업을 먼저 읽으세요.

이 소문제에서 실제로 쓰는 용어

정의뿐 아니라 이 문제의 어느 판단에 쓰이는지까지 연결합니다.

sll
rs1 값을 rs2가 지정한 만큼 논리적으로 왼쪽 shift해 rd에 쓰는 R-type instruction입니다.이 소문제에서: R-type opcode `0110011`, funct3 `001`, funct7 `0000000`을 확인합니다.
shift amount
값을 몇 bit 이동할지 정하는 수치입니다.이 소문제에서: RV32 `sll`에서는 rs2 값의 하위 5 bit에서 옵니다.
slli
shift amount가 instruction immediate field에 들어 있는 I-type shift instruction입니다.이 소문제에서: `sll` 후보를 I-type opcode와 혼동하지 않게 비교합니다.
logical left shift
bit를 왼쪽으로 이동하고 오른쪽 빈자리를 0으로 채우는 연산입니다.이 소문제에서: overflow를 제외하면 `2^shamt` 곱셈과 같은 실행 의미를 설명합니다.

이 소문제 전용 규칙과 종이 작업

shift source 규칙

`sll`은 세 번째 register rs2가 shift amount를 제공하고 `slli`는 instruction의 immediate가 제공합니다.

종이에: 세 번째 operand 아래에 `register` 또는 `immediate`라고 표시합니다.

R-type 기능 조합

`sll`은 opcode `0110011`, funct3 `001`, funct7 `0000000`의 결합으로 결정됩니다.

종이에: 세 고정 field를 모두 체크한 뒤 register를 읽습니다.

RV32 하위 5 bit 규칙

RV32 register shift는 rs2 전체 값이 아니라 하위 5 bit를 사용해 0…31 범위의 shamt를 얻습니다.

종이에: 실행 trace에서는 `shamt = rs2 & 0x1F`를 씁니다.

Aufgabe 전체 흐름은 챕터 흐름도에서 확인할 수 있습니다. 여기서는 현재 판단에 직접 필요한 규칙만 적용합니다.

이 소문제 전용 작은 예제

`sll t0,t1,t2`를 hex로 encoding하세요.

주어진 것

  • t0=x5, t1=x6, t2=x7입니다.
  • sll의 funct7=`0000000`, funct3=`001`, opcode=`0110011`입니다.
  1. 세 register를 field 역할에 배치합니다.

    첫 operand가 rd이고 shift할 값과 amount source가 뒤에 옵니다.

    종이 산출물: `rd=x5, rs1=x6, rs2=x7`

  2. sll의 세 기능 field를 조립합니다.

    같은 R-type의 add 등과 shift operation을 구분합니다.

    종이 산출물: `0000000 00111 00110 001 00101 0110011`

  3. 8자리 hex로 변환합니다.

    binary 후보와 hex 표기를 양방향 검산합니다.

    종이 산출물: `0x007312B3`

예제 답과 독립 검산 보기

`sll t0,t1,t2`의 encoding은 `0x007312B3`입니다.

독립 검산: bits[14:12]가 `001`, bits[24:20]이 x7인지 다시 decode합니다.

이 instruction의 field를 실제로 채우기

아래 표는 이 소문제만의 값입니다. 일반 format 표와 섞지 말고 각 행을 bit열에서 직접 가리켜 보세요.

formatR-type sll
opcode0110011
rda2=x12
funct3001
rs1a4=x14
rs2a5=x15
funct70000000

이제 실제 시험 문제를 micro-work로 풀기

공식 시험이 요구하는 것

shift amount가 register에서 오는 R-type을 찾으세요.

공식 답을 보기 전, 내 답 먼저 남기기

완성 문장이 아니어도 좋습니다. 중간값·register·cycle·cache state처럼 채점 가능한 흔적을 먼저 적으세요.

각 작업의 중간 산출물을 직접 적고 완료 조건을 만족한 뒤 체크하세요. 단계별 이유·산출물·오류가 현재 소문제에 맞게 따로 작성되어 있습니다.

R-type opcode `0110011`을 찾아 register shift 후보로 분류합니다.

왜 하는가
I-type `slli`를 먼저 제외하고 R-type layout을 적용합니다.
종이 산출물
`opcode=0110011 → R-type, slli 아님`을 적습니다.
완료 조건
후보 bit열이 register-register 연산으로 분류되었습니다.
막혔을 때 단계 힌트·대표 오류

힌트: `slli`는 ALU immediate opcode `0010011`입니다.

이 단계의 대표 오류: shift라는 단어만 보고 sll과 slli를 같은 format으로 읽는 것입니다.

funct3 `001`, funct7 `0000000`으로 sll을 확인합니다.

왜 하는가
R-type family 안에서 logical left shift operation을 정확히 선택합니다.
종이 산출물
`f3=001, f7=0000000 → sll`
완료 조건
opcode 외 두 function field가 모두 일치합니다.
막혔을 때 단계 힌트·대표 오류

힌트: funct3는 bits[14:12], funct7은 bits[31:25]입니다.

이 단계의 대표 오류: funct3만 보고 다른 확장 연산 가능성을 확인하지 않는 것입니다.

rd=a2(x12), rs1=a4(x14), rs2=a5(x15)를 확인합니다.

왜 하는가
shift 결과, shift할 값, shift amount source의 방향이 모두 encoding과 맞아야 합니다.
종이 산출물
`a2←a4 << (a5 & 0x1F)`, `rd=01100, rs1=01110, rs2=01111`을 적습니다.
완료 조건
세 ABI 이름, x번호, 실행 의미가 일치합니다.
막혔을 때 단계 힌트·대표 오류

힌트: Assembly의 세 번째 operand a5가 immediate 숫자가 아니라 register입니다.

이 단계의 대표 오류: a5 자체를 encoding의 5-bit immediate shamt로 놓아 I-type처럼 해석하는 것입니다.

공식 답을 열기 전 마지막 회상

`sll`과 `slli`의 두 번째 shift operand는 어떻게 다른가요?

내 풀이 후 공식 결론·이유·대표 함정 확인

공식 결론

`sll a2,a4,a5` ↔ `00000000111101110001011000110011`.

왜 이 답이 되는가

`sll`은 rs2의 하위 bit가 정한 만큼 rs1을 왼쪽으로 shift하고 rd에 씁니다.

대표 함정

`slli`는 immediate shift라 I-type입니다. `sll`과 format을 섞지 마세요.

명령어와 식을 줄 단위로 읽기

본문 속 code를 한 줄씩 분리했습니다. 각 줄에서 source, operation, destination을 표시하세요.

sll
sll a2,a4,a5
00000000111101110001011000110011

새 문제로 전이하기

세 문항은 앞 문장의 반복이 아닙니다. 직접 답을 입력하면 rubric의 필수 기준을 하나씩 검사하고, 첫 누락 기준을 알려 줍니다.

1. 개념 재구성

`sll`과 `slli`를 format, shift amount 출처, 공통 실행 효과 세 축으로 비교하세요.

제출 후 모델 답 보기

`sll`은 R-type이고 shift amount는 rs2 register의 하위 5 bit에서 옵니다. `slli`는 I-type이고 shift amount는 instruction immediate에 들어 있습니다. 둘 다 rs1을 논리적으로 왼쪽 shift해 rd에 씁니다.

2. 변형 문제

RV32에서 a4=`3`, a5=`34`일 때 `sll a2,a4,a5` 실행 후 a2를 계산하세요.

제출 후 모델 답 보기

`shamt = 34 & 0x1F = 2`이므로 `a2 = 3 << 2 = 12`입니다.

3. 오류 진단

학생이 `sll a2,a4,a5`를 I-type으로 그리고 a5의 register 번호 15를 immediate shamt=15로 넣었습니다. 첫 format 오류와 올바른 amount source를 쓰세요.

제출 후 모델 답 보기

첫 오류는 `sll`을 I-type으로 본 것입니다. `sll`은 R-type이며 a5는 rs2=x15 field에 들어가고, 실행 시 a5 register 값의 하위 5 bit가 shift amount입니다. immediate format은 `slli`입니다.

이 소문제를 끝냈다고 말할 수 있는 기준

이 소문제의 정확한 공식 페이지와 대조하기

왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.

2-8 관련 공식 시험 또는 해설 페이지
exam-p06.png · 클릭해 원본 크기로 확인
2-8 관련 공식 시험 또는 해설 페이지
solution-p07.png · 클릭해 원본 크기로 확인

Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p6 · 공식 해설 p7 · SoSe26 Probeklausur 시험 p6 Aufgabe 2의 `sll a2,a4,a5` 후보·bit열과 공식 해설 p7의 해당 pairing.