---
# System prepended metadata

title: Homework 5 - CPU Emulator

---

# Homework 5 - CPU Emulator

## Läxa

Designa en specification för en egen ISA (eller använd en existerande)
* Hur encodas maskinkoden?
* Hur många register?
* Vad har eran ISA för word size?

Om ni väljer något existerande, välj då något simpelt typ inte x86:
* [Nand2Tetris (Hack Computer)](https://en.wikipedia.org/wiki/Hack_computer)
* [Chip-8](https://en.wikipedia.org/wiki/CHIP-8)
* [Intel 8080](https://en.wikipedia.org/wiki/Intel_8080) (föregångare till x86)
* MIPS (inte nya versioner)
* Någon tidig ARM processor

Skriv en emulator för eran ISA:
* Ni får använda vilket språk ni vill
* Det är tillåtet att arbeta i grupper av 2-3 personer
* Github repot ska heta **kth-id0**-**kth-id1**-emulators

## Resurser
* [Slides](https://docs.google.com/presentation/d/1b5p011i7Dyfm_2Y7neD1Yv892T9ocZRwXTMocwTPyPc/edit?usp=drivesdk)
* [Nand2Tetris (Hack Computer)](https://en.wikipedia.org/wiki/Hack_computer)
* [Chip-8](https://en.wikipedia.org/wiki/CHIP-8)
* [Intel 8080](https://en.wikipedia.org/wiki/Intel_8080)
* [Instruction encoding/decoding för MIPS men relevant oavsett vilken ISA man använder](https://courses.stephenmarz.com/my-courses/cosc130/lectures/encoding-and-decoding-instructions/)
* Video serie om caches för er som vara intersserade
    * [Introduction to caches](https://www.youtube.com/watch?v=Bz49xnKBH_0)
    * [Fully Associative Caches and Replacement Algorithms](https://www.youtube.com/watch?v=A0vR-ks3hsQ)
    * [Direct Mapped Caches](https://www.youtube.com/watch?v=zocwH0g-qQM)
    * [Set-Associative Caches](https://www.youtube.com/watch?v=gr5M9CULUZw)
    * [Cache Write Policies](https://www.youtube.com/watch?v=Y7q2ECeFWE8)


