# 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)