---
schema_version: 1
exam_id: "sose26-probeklausur"
aufgabe: 2
unit_id: "2-0"
source_group_id: "2"
official_exam: true
official_solution: true
language: "ko"
---

# 2-0 — 매칭 전체 풀이 루틴

> **학습 목표:** pseudo instruction을 base instruction으로 확장하고 opcode부터 field를 해독해 instruction 후보와 encoding을 일대일로 매칭한다.
>
> **왜 따로 배우는가:** 9개 이름과 8개 bit열을 눈모양으로 맞추면 한 번의 오판이 남은 모든 쌍을 밀어냅니다. opcode→format→field→소거 순서를 고정하면 매칭 자체가 각 쌍의 독립 검산이 됩니다.
>
> **범위:** Aufgabe 2 · 8점 Aufgabe의 최소 학습 단위 · 시험 p6 · 공식 해설 p7

## 1. 문제 원문 (Deutsch)

이 unit은 공식 Teilaufgabe 또는 표의 한 행·한 access를 학습 가능한 최소 단위로 다시 나눈 것입니다. 아래 전사는 source group `2`의 공식 독일어 문제 원문이며, 페이지 이미지를 바로 뒤에 함께 두어 코드·표·도식을 대조할 수 있게 했습니다.

~~~text
Aufgabe 2: Binärcode und Assemblerzuordnung

Unten sind 9 RISC-V-Befehle und 8 binäre Repräsentationen gegeben. Verbinden Sie die passenden Paare miteinander.

Hinweise:

- Nicht alle der dargestellten Befehle und Bitsequenzen gehören zusammen. Falls Sie ein Element ohne passende Entsprechung identifizieren, streichen Sie es durch.
- nop und ret sind sogenannte Pseudoinstruktionen. Um diese dekodieren zu können, schreiben Sie diese zuerst als Basis-Instruktion auf. Diese finden Sie in der RISC-V Reference¹ im Moodle.
- In dieser Aufgabe wird die Bitdarstellung von links (Bit 31) nach rechts (Bit 0) gelesen.

|  |  |
|---|---|
| `0x00000013` | `beq s0, s1, 12` |
| `00000000100101000000011001100011` | `sw a4, 8(t0)` |
| `0x00008067` | `add t0, a6, t2` |
| `00000000111000101010010000100011` | `jal ra, 32` |
| `0x007802B3` | `nop` |
| `00000010000000000000000011101111` | `ret` |
| `0xFE6298E3` | `bne t0, t1, -16` |
| `00000000111101110001011000110011` | `sll a2, a4, a5` |
|  | `addi t0, a6, 2` |

¹ https://moodle.informatik.tu-darmstadt.de/pluginfile.php/331793/mod_resource/content/9/RISC-V%20Reference.pdf
~~~

![공식 시험 원문 — exam-p06.png](../../assets/exam-p06.png)

*공식 시험 원문: `exam-p06.png` · Probeklausur.pdf · PDF p.6*

### 이 unit에서 풀 항목

9개 instruction과 8개 encoding을 짝지으세요.

## 2. 쉬운 한국어 해석

문제 2: 이진 코드와 어셈블리 명령 연결

아래에 9개의 RISC-V 명령과 8개의 이진 인코딩 표현이 주어져 있다. 서로 맞는 쌍을 연결하시오.

유의사항:

- 제시된 모든 명령과 bit sequence가 서로 대응하는 것은 아니다. 대응 항목이 없는 요소를 발견하면 취소선을 그으시오.
- nop과 ret은 이른바 pseudoinstruction이다. 이를 decode하려면 먼저 base instruction으로 써라. 해당 base instruction은 Moodle의 RISC-V Reference¹에서 찾을 수 있다.
- 이 문제의 bit 표기는 왼쪽이 Bit 31이고 오른쪽이 Bit 0이다.

| 이진 인코딩 표현 | RISC-V 명령 |
|---|---|
| `0x00000013` | `beq s0, s1, 12` |
| `00000000100101000000011001100011` | `sw a4, 8(t0)` |
| `0x00008067` | `add t0, a6, t2` |
| `00000000111000101010010000100011` | `jal ra, 32` |
| `0x007802B3` | `nop` |
| `00000010000000000000000011101111` | `ret` |
| `0xFE6298E3` | `bne t0, t1, -16` |
| `00000000111101110001011000110011` | `sll a2, a4, a5` |
|  | `addi t0, a6, 2` |

¹ https://moodle.informatik.tu-darmstadt.de/pluginfile.php/331793/mod_resource/content/9/RISC-V%20Reference.pdf

### 이 unit에 해당하는 최소 작업

9개 instruction과 8개 encoding을 짝지으세요.

이 문제에서 최종 결과만 맞히는 것보다 중요한 것은 `2-0`에 필요한 중간 판단을 답안지에 남기는 것입니다.

## 3. 무엇을 묻는 문제인가

### 공식 문제의 요구사항

- 8개의 encoded machine word를 각각 대응하는 RISC-V 명령과 연결한다.
- 대응 항목이 없는 요소를 찾아 취소선으로 표시한다.
- nop과 ret을 decode하기 전에 각각 base instruction으로 확장한다.

### 조건과 제약

- 명령 후보는 9개이고 encoding 후보는 8개이다.
- 모든 항목이 대응한다고 가정하지 말고 field를 decode해 일대일로 검증한다.
- nop과 ret은 pseudoinstruction이므로 base instruction을 먼저 써야 한다.
- 32-bit 표기는 왼쪽부터 Bit 31, 오른쪽 끝이 Bit 0이다.
- hex로 적힌 항목과 32자리 binary로 적힌 항목을 모두 instruction encoding 후보로 취급한다.

### 원문 오탈자·도식 관련 주의

- 원문은 ‘8 binäre Repräsentationen’이라고 부르지만 여덟 항목 중 네 개는 0x 접두사가 붙은 hexadecimal 표기이고 네 개만 32자리 binary bit sequence로 직접 표기되어 있다.
- PDF의 두 열은 같은 행끼리 이미 대응한다는 뜻이 아니라 연결할 두 후보 목록이다. 이를 보존하기 위해 열 순서와 행 배치만 표로 옮겼다.
- 각주 URL은 PDF에서 ‘RISC-V%’와 ‘20Reference.pdf’ 사이가 줄바꿈되어 있으나 실제 URL의 percent-encoding인 ‘%20’으로 연결해 기록했다.

### 도식 시각 확인 상태

- **도식 의존 여부:** 이 최소 unit의 핵심 판정은 텍스트·수식·코드로 재현할 수 있습니다.
- **공식 페이지 상태:** exam-p06.png, solution-p07.png가 원문 대조용으로 렌더되어 연결되어 있습니다.

### 이 unit의 학습 목표

- **관찰 가능한 목표:** pseudo instruction을 base instruction으로 확장하고 opcode부터 field를 해독해 instruction 후보와 encoding을 일대일로 매칭한다.
- **출제 의도:** 9개 이름과 8개 bit열을 눈모양으로 맞추면 한 번의 오판이 남은 모든 쌍을 밀어냅니다. opcode→format→field→소거 순서를 고정하면 매칭 자체가 각 쌍의 독립 검산이 됩니다.
- **공식 근거 범위:** SoSe26 Probeklausur 시험 p6 Aufgabe 2의 9개 instruction·8개 encoding 전체 목록과 공식 해설 p7의 전체 pairing 범위.
- **Aufgabe 공통 선수지식:** 32-bit instruction을 opcode(하위 7 bit)부터 읽고, opcode가 정한 format에 따라 rd/funct3/rs1/rs2/immediate를 분해합니다. Hex는 먼저 4-bit 묶음으로 binary로 바꿉니다.

## 4. 선수 개념과 핵심 용어

### opcode

- **뜻:** instruction family와 기본 format을 정하는 하위 7 bit `bits[6:0]`입니다.
- **이 문제에서:** 각 bit열을 R/I/S/B/J-type 후보군으로 먼저 줄입니다.

### pseudo instruction

- **뜻:** Assembler가 실제 base instruction 표현으로 바꾸는 편의 mnemonic입니다.
- **이 문제에서:** `nop`과 `ret`을 field 비교가 가능한 `addi`, `jalr`로 펼칩니다.

### instruction format

- **뜻:** R/I/S/B/J-type처럼 register와 immediate bit 위치를 정한 layout입니다.
- **이 문제에서:** opcode를 찾은 뒤 rd, rs1, rs2, immediate를 올바른 위치에서 읽게 합니다.

### one-to-one matching

- **뜻:** 확정한 instruction과 encoding을 양쪽 후보 집합에서 동시에 제거하는 방식입니다.
- **이 문제에서:** 8개 쌍을 중복 없이 만들고 9번째 unmatched instruction을 검산합니다.

### 이 문제에 적용할 풀이 규칙

### 규칙 1. 오른쪽 7 bit 우선 규칙

RISC-V opcode는 표기된 32-bit 문자열의 오른쪽 끝 `bits[6:0]`이므로 왼쪽부터 instruction 종류를 추측하면 안 됩니다.

- **시험지에 남길 것:** 각 encoding의 마지막 7 bit에 밑줄을 긋고 opcode 이름을 씁니다.

### 규칙 2. format 이후 field 규칙

같은 bit 위치도 format에 따라 immediate 조각인지 register인지 달라질 수 있으므로 opcode가 format을 정한 뒤에 해독합니다.

- **시험지에 남길 것:** `opcode → format → funct → registers → immediate` 순서의 체크박스를 만듭니다.

### 규칙 3. 양쪽 소거 규칙

하나의 쌍을 확정할 때 instruction과 encoding을 함께 지워야 중복 매칭과 잘못된 ‘마지막 남는 것’ 추론을 막습니다.

- **시험지에 남길 것:** 쌍 번호를 양쪽 항목에 같은 색/번호로 쓰고 동시에 취소선을 긋습니다.

### 공식 문제 전에 푸는 작은 유사 예제

**문제:** 후보는 `add x5,x6,x7`, `addi x5,x6,7`, `sw x7,0(x6)`이고 encoding의 opcode가 각각 `0110011`, `0010011`, `0100011`이다. opcode만으로 세 후보군을 먼저 매칭하세요.

**주어진 것**

- `0110011`은 R-type integer register 연산입니다.
- `0010011`은 I-type ALU immediate, `0100011`은 S-type store입니다.

### 예제 단계 1. 세 mnemonic의 operand 구조에서 format 후보를 정합니다.

- **왜:** register 세 개, immediate, memory store 표기가 서로 다른 family를 가리킵니다.
- **종이에:** `add→R, addi→I, sw→S`

### 예제 단계 2. 각 opcode를 format 이름으로 바꿉니다.

- **왜:** bit열을 왼쪽 모양이 아니라 ISA의 하위 7 bit로 분류해야 합니다.
- **종이에:** `0110011→R, 0010011→I, 0100011→S`

### 예제 단계 3. 같은 format끼리 일대일로 연결하고 양쪽을 제거합니다.

- **왜:** 후보 수를 줄이면서 중복 연결을 방지합니다.
- **종이에:** `add↔0110011, addi↔0010011, sw↔0100011`

**예제 정답:** `add`는 `0110011`, `addi`는 `0010011`, `sw`는 `0100011` opcode 후보와 연결됩니다.

**독립 검산:** 각 쌍에서 실제 register/immediate field까지 해독하기 전에는 ‘후보군 매칭’일 뿐 최종 확정이 아님을 표시합니다.

## 5. 공식 정답 요약

**공식 결론:** 공식 전체 pairing은 아래 2-1~2-9 카드와 같습니다.

- `nop` = `addi x0,x0,0` ↔ `0x00000013`.
- `ret` = `jalr x0,ra,0` ↔ `0x00008067`; 실행 시 `PC←(ra+0)&~1`.
- `beq s0,s1,12` ↔ `00000000100101000000011001100011`.
- `sw a4,8(t0)` ↔ `00000000111000101010010000100011`.
- `add t0,a6,t2` ↔ `0x007802B3`.
- `jal ra,32` ↔ `00000010000000000000000011101111`.
- `bne t0,t1,-16` ↔ `0xFE6298E3`.
- `sll a2,a4,a5` ↔ `00000000111101110001011000110011`.
- `addi t0,a6,2`는 대응 encoding이 없어 취소선 대상입니다.

### 시험지 문장별 정답 해설

아래는 시험지의 항목 순서를 그대로 유지합니다. 각 항목에서 원문 → 한국어 번역 → 정답 → 판단 근거 → 실제로 쓸 답을 바로 이어서 읽으세요.



### 현재 소문제의 요구·판단·답을 한 흐름으로 연결

### `2-0`에서 정확히 답할 대상

- **시험지가 요구하는 답:** 9개 instruction과 8개 encoding을 짝지으세요.
- **이 소문제의 공식 답:** 공식 전체 pairing은 아래 2-1~2-9 카드와 같습니다.

- `nop` = `addi x0,x0,0` ↔ `0x00000013`.
- `ret` = `jalr x0,ra,0` ↔ `0x00008067`; 실행 시 `PC←(ra+0)&~1`.
- `beq s0,s1,12` ↔ `00000000100101000000011001100011`.
- `sw a4,8(t0)` ↔ `00000000111000101010010000100011`.
- `add t0,a6,t2` ↔ `0x007802B3`.
- `jal ra,32` ↔ `00000010000000000000000011101111`.
- `bne t0,t1,-16` ↔ `0xFE6298E3`.
- `sll a2,a4,a5` ↔ `00000000111101110001011000110011`.
- `addi t0,a6,2`는 대응 encoding이 없어 취소선 대상입니다.

### 판단 1. `nop`과 `ret`을 base instruction으로 펼칩니다.

- **왜:** pseudo 이름에는 직접 비교할 opcode와 field가 없으므로 실제 encoding 대상 형태로 바꿔야 합니다.
- **이 판단에서 답안지에 남길 것:** `nop=addi x0,x0,0`, `ret=jalr x0,ra,0`을 후보 옆에 씁니다.

### 판단 2. 각 bit열의 opcode `bits[6:0]`를 읽습니다.

- **왜:** opcode는 instruction family와 해독할 format을 가장 먼저 제한합니다.
- **이 판단에서 답안지에 남길 것:** 8개 encoding 오른쪽 7 bit 아래에 `R/I/S/B/J/jalr` 후보를 씁니다.

### 판단 3. opcode가 정한 format으로 register field와 immediate를 복원합니다.

- **왜:** 같은 opcode 후보가 여럿일 때 rd/rs1/rs2/funct/immediate가 정확한 instruction을 결정합니다.
- **이 판단에서 답안지에 남길 것:** 각 encoding에 `rd=`, `rs1=`, `rs2=`, `imm=` 표를 채웁니다.

### 판단 4. 한 쌍을 확정할 때 instruction과 encoding을 모두 지웁니다.

- **왜:** 일대일 제약을 작업 과정에 반영해야 같은 bit열을 두 번 사용하는 실수를 막습니다.
- **이 판단에서 답안지에 남길 것:** 확정 쌍 양쪽에 같은 번호를 쓰고 취소선을 긋습니다.

### 판단 5. 마지막 instruction이 unmatched인지 field로 다시 확인합니다.

- **왜:** ‘남았으니 정답’은 앞선 오류를 숨길 수 있으므로 실제 필요한 encoding이 주어진 목록에 없는지 검산해야 합니다.
- **이 판단에서 답안지에 남길 것:** 남은 instruction의 예상 opcode, rd, rs1, immediate를 적고 8개 bit열과 대조합니다.

### 위 판단이 최종 답으로 이어지는 이유

Opcode는 instruction의 가족표지입니다. 먼저 pseudo instruction을 base instruction으로 바꾸면 모든 후보를 같은 규칙으로 비교할 수 있습니다.

### 답안 작성 시 주의

binary를 왼쪽부터 opcode로 읽지 마세요. RISC-V opcode는 오른쪽 끝 bit 6..0입니다.

![공식 Musterlösung/Hinweise — solution-p07.png](../../assets/solution-p07.png)

*공식 Musterlösung/Hinweise: `solution-p07.png` · Probeklausur Musterlösung und Hinweise.pdf · PDF p.7*

## 6. 풀이 전략

1. `nop=addi x0,x0,0`, `ret=jalr x0,ra,0`로 펼칩니다.
2. 각 bit열의 opcode [6:0]를 읽습니다.
3. format에 맞춰 register field와 immediate를 복원합니다.
4. 한 쌍을 연결할 때 양쪽을 모두 지웁니다.
5. 마지막 남는 항목을 unmatched로 확인합니다.

## 7. 단계별 상세 풀이

### 단계 1. `nop`과 `ret`을 base instruction으로 펼칩니다.

- **이유:** pseudo 이름에는 직접 비교할 opcode와 field가 없으므로 실제 encoding 대상 형태로 바꿔야 합니다.
- **종이에 남길 것:** `nop=addi x0,x0,0`, `ret=jalr x0,ra,0`을 후보 옆에 씁니다.
- **완료 기준:** 모든 후보가 실제 base mnemonic과 operand field로 표현되어 있습니다.
- **막힐 때 힌트:** 두 pseudo 모두 destination에 x0을 사용합니다.
- **가장 흔한 첫 오류:** `nop`과 `ret`에 별도의 opcode가 있다고 찾는 것입니다.

### 단계 2. 각 bit열의 opcode `bits[6:0]`를 읽습니다.

- **이유:** opcode는 instruction family와 해독할 format을 가장 먼저 제한합니다.
- **종이에 남길 것:** 8개 encoding 오른쪽 7 bit 아래에 `R/I/S/B/J/jalr` 후보를 씁니다.
- **완료 기준:** 모든 encoding에 opcode와 family 표기가 있습니다.
- **막힐 때 힌트:** binary 문자열의 맨 오른쪽 일곱 자리부터 세세요.
- **가장 흔한 첫 오류:** 왼쪽 일곱 bit를 opcode로 읽는 것입니다.

### 단계 3. opcode가 정한 format으로 register field와 immediate를 복원합니다.

- **이유:** 같은 opcode 후보가 여럿일 때 rd/rs1/rs2/funct/immediate가 정확한 instruction을 결정합니다.
- **종이에 남길 것:** 각 encoding에 `rd=`, `rs1=`, `rs2=`, `imm=` 표를 채웁니다.
- **완료 기준:** 각 확정 쌍에 opcode 외 최소 두 field의 일치 근거가 있습니다.
- **막힐 때 힌트:** B/S/J immediate는 연속된 한 덩어리가 아닙니다.
- **가장 흔한 첫 오류:** format을 정하지 않고 모든 bit열에서 같은 위치를 rd로 읽는 것입니다.

### 단계 4. 한 쌍을 확정할 때 instruction과 encoding을 모두 지웁니다.

- **이유:** 일대일 제약을 작업 과정에 반영해야 같은 bit열을 두 번 사용하는 실수를 막습니다.
- **종이에 남길 것:** 확정 쌍 양쪽에 같은 번호를 쓰고 취소선을 긋습니다.
- **완료 기준:** 확정된 항목이 어느 한쪽 후보 목록에도 남아 있지 않습니다.
- **막힐 때 힌트:** 한 encoding에는 한 instruction만 대응합니다.
- **가장 흔한 첫 오류:** encoding만 지워 이미 쓴 instruction을 다시 연결하는 것입니다.

### 단계 5. 마지막 instruction이 unmatched인지 field로 다시 확인합니다.

- **이유:** ‘남았으니 정답’은 앞선 오류를 숨길 수 있으므로 실제 필요한 encoding이 주어진 목록에 없는지 검산해야 합니다.
- **종이에 남길 것:** 남은 instruction의 예상 opcode, rd, rs1, immediate를 적고 8개 bit열과 대조합니다.
- **완료 기준:** 남은 후보가 왜 어떤 encoding에도 맞지 않는지 최소 두 field로 설명했습니다.
- **막힐 때 힌트:** 남는 개수 1과 0을 확인한 뒤 직접 encoding의 특징을 계산하세요.
- **가장 흔한 첫 오류:** 앞 쌍을 검증하지 않은 채 마지막 남은 항목을 자동 정답으로 선언하는 것입니다.

### Instruction field 검산

bit열을 느낌으로 고르지 말고 다음 field를 실제 위치에서 확인합니다.

- **시작:** pseudo를 base instruction으로 펼침
- **우선순위:** opcode→format→register→immediate
- **끝:** 남은 후보 역검산

## 8. 문제와 공식 해설의 비교·검증

- **문제가 요구하는 것:** 9개 instruction과 8개 encoding을 짝지으세요.
- **공식 해설이 제시하는 결론:** 공식 전체 pairing은 아래 2-1~2-9 카드와 같습니다.

- `nop` = `addi x0,x0,0` ↔ `0x00000013`.
- `ret` = `jalr x0,ra,0` ↔ `0x00008067`; 실행 시 `PC←(ra+0)&~1`.
- `beq s0,s1,12` ↔ `00000000100101000000011001100011`.
- `sw a4,8(t0)` ↔ `00000000111000101010010000100011`.
- `add t0,a6,t2` ↔ `0x007802B3`.
- `jal ra,32` ↔ `00000010000000000000000011101111`.
- `bne t0,t1,-16` ↔ `0xFE6298E3`.
- `sll a2,a4,a5` ↔ `00000000111101110001011000110011`.
- `addi t0,a6,2`는 대응 encoding이 없어 취소선 대상입니다.
- **결론을 재현하는 핵심 논리:** Opcode는 instruction의 가족표지입니다. 먼저 pseudo instruction을 base instruction으로 바꾸면 모든 후보를 같은 규칙으로 비교할 수 있습니다.
- **검증 방법:** 위 micro-step의 `종이에 남길 것`을 순서대로 만들고 각 `완료 기준`을 확인합니다. 최종 산출물이 공식 결론과 같은지 대조합니다.
- **전제와 주의 범위:** binary를 왼쪽부터 opcode로 읽지 마세요. RISC-V opcode는 오른쪽 끝 bit 6..0입니다.
- **채택할 시험 답:** 이 가이드에서는 공식 Musterlösung의 결론을 시험 답으로 유지하며, 일반 ISA 또는 다른 구현과 달라질 수 있는 부분은 위 전제와 주의 범위에서 분리합니다.

## 9. 시험장에서 쓸 최종 답안

공식 전체 pairing은 아래 2-1~2-9 카드와 같습니다.

- `nop` = `addi x0,x0,0` ↔ `0x00000013`.
- `ret` = `jalr x0,ra,0` ↔ `0x00008067`; 실행 시 `PC←(ra+0)&~1`.
- `beq s0,s1,12` ↔ `00000000100101000000011001100011`.
- `sw a4,8(t0)` ↔ `00000000111000101010010000100011`.
- `add t0,a6,t2` ↔ `0x007802B3`.
- `jal ra,32` ↔ `00000010000000000000000011101111`.
- `bne t0,t1,-16` ↔ `0xFE6298E3`.
- `sll a2,a4,a5` ↔ `00000000111101110001011000110011`.
- `addi t0,a6,2`는 대응 encoding이 없어 취소선 대상입니다.

답안지에는 결과만 쓰지 말고, 7절의 중간 산출물 가운데 판정을 증명하는 식·bit field·register 상태·cycle·cache 상태를 함께 남기세요.

## 10. 자주 하는 실수와 검산 체크리스트

### 대표 실수

- binary를 왼쪽부터 opcode로 읽지 마세요. RISC-V opcode는 오른쪽 끝 bit 6..0입니다.
- `nop`과 `ret`에 별도의 opcode가 있다고 찾는 것입니다.
- 왼쪽 일곱 bit를 opcode로 읽는 것입니다.
- format을 정하지 않고 모든 bit열에서 같은 위치를 rd로 읽는 것입니다.
- encoding만 지워 이미 쓴 instruction을 다시 연결하는 것입니다.
- 앞 쌍을 검증하지 않은 채 마지막 남은 항목을 자동 정답으로 선언하는 것입니다.

### 빠른 self-check

- **회상 질문:** Branch immediate가 bit열에서 연속으로 놓이지 않는 이유를 알고 있나요?
- [ ] 새 32-bit bit열에서 오른쪽 7 bit를 10초 안에 표시하고 format 후보를 정할 수 있다.
- [ ] 각 매칭 쌍을 opcode 외 register/immediate field 하나 이상으로 검산할 수 있다.

## 11. 짧은 확인 문제와 전이 연습

### 개념 재구성

**문제:** 32-bit RISC-V matching을 위한 다섯 단계 알고리즘을 pseudo 확장부터 unmatched 검산까지 순서대로 복원하세요.

**힌트:** bit열에서는 오른쪽 7 bit가 첫 출발점입니다.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** ① pseudo instruction을 base instruction으로 확장한다. ② 오른쪽 `bits[6:0]`에서 opcode를 읽는다. ③ opcode로 format을 정한다. ④ register와 immediate field를 검증해 쌍을 양쪽에서 제거한다. ⑤ 마지막 unmatched 후보도 예상 field로 재검산한다.

**채점 기준**
  - pseudo instruction
  - base instruction
  - bits[6:0]
  - opcode
  - format
  - register
  - immediate
  - 양쪽
  - unmatched

</details>

### 변형 문제

**문제:** 후보 `sub x3,x4,x5`, `lw x3,0(x4)`, `jal x3,16`과 opcode 끝자리 `0110011`, `0000011`, `1101111` 세 개를 family 수준에서 매칭하고 추가로 확인할 field 하나씩을 적으세요.

**힌트:** R-type, load I-type, J-type을 먼저 구분하세요.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** `sub↔0110011`이며 funct7를 확인합니다. `lw↔0000011`이며 funct3를 확인합니다. `jal↔1101111`이며 rd와 J-immediate를 확인합니다.

**채점 기준**
  - sub↔0110011|sub-0110011
  - funct7
  - lw↔0000011|lw-0000011
  - funct3
  - jal↔1101111|jal-1101111
  - j-immediate|rd

</details>

### 오답 진단

**문제:** 학생이 첫 encoding의 왼쪽 7 bit를 opcode로 읽고, 한 번 고른 `beq`를 두 encoding에 연결했습니다. 가장 먼저 고칠 절차와 일대일 제약을 설명하세요.

**힌트:** opcode의 bit 번호와 확정 쌍을 지우는 방향을 쓰세요.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** 첫 절차 오류는 왼쪽 7 bit를 읽은 것입니다. opcode는 오른쪽 `bits[6:0]`에서 읽어야 합니다. 한 쌍을 확정하면 instruction과 encoding을 양쪽 목록에서 모두 제거해야 하므로 같은 `beq`를 재사용할 수 없습니다.

**채점 기준**
  - 오른쪽
  - bits[6:0]
  - instruction
  - encoding
  - 양쪽
  - 제거
  - 재사용

</details>

## 12. 근거 자료

- `[문제 출처] current:Probeklausur.pdf` — 시험 p6 · 공식 해설 p7
- `[공식 해설] current:Probeklausur Musterlösung und Hinweise.pdf` — 시험 p6 · 공식 해설 p7
- `[정확한 원문 group] 2` — 시험 p.6 · 공식 해설 p.7
- `[소문항 범위] SoSe26 Probeklausur 시험 p6 Aufgabe 2의 9개 instruction·8개 encoding 전체 목록과 공식 해설 p7의 전체 pairing 범위.`
- `[개념 근거 · file-level] current:Vorlesung/Rechnerorganisation - Teil 1.pdf` — RISC-V instruction format과 machine language
- `[개념 근거 · file-level] current:Uebung/Übung 1 Musterlösung.pdf` — RISC-V format과 encoding
- `[개념 근거 · file-level] current:Uebung/Übung 2 Musterlösung/Rechnerorganisation_Übung2_Lösung.pdf` — Immediate와 assembler hand-trace
- `[개념 근거 · file-level] current:Uebung/RISC-V Reference.pdf` — register 별칭, opcode, pseudoinstruction

### 이 파일에서 직접 대조한 공식 이미지

- `exam-p06.png` — Probeklausur.pdf · PDF p.6
- `solution-p07.png` — Probeklausur Musterlösung und Hinweise.pdf · PDF p.7

정확한 강의 슬라이드 한 페이지를 확정하지 못한 개념 자료는 `file-level`로 표시했습니다. 페이지 번호를 추측해서 만들지 않았습니다.
