# Assignment1: RISC-V Assembly and Instruction Pipeline
( Due: Sep 16, 2019 )
## Requirements
1. Following the instructions of [Lab1: R32I Simulator](/@sysprog/H1TpVYMdB), you shall write RISC-V assembly programs (R32I ISA) such as calculating Fibonacci numbers and output to the console with system calls.
* Don't implement the same subject as others do. Your program shall be different.
* You have to ensure the program functioned with [Ripes](https://github.com/mortbopet/Ripes) simulator.
2. You have to explain how each instruction works along with [Ripes](https://github.com/mortbopet/Ripes) simulator.
* Explain your program with the visualization for multiplexer input selection, register write/enable signals and more. You have to illustrate each stage such as IF, ID, IE, MEM, and WB. In addition, you should discuss the steps of memory updates accordingly.
3. Write down your thoughts and progress in [HackMD notes](https://hackmd.io/s/features).
* [Example page](https://hackmd.io/@kksweet8845/2019q3homworkquiz2): Do not modify this note.
* Insert your HackMD notes and RISC-V assembly programs in the following table.
## Fill in the table for your homework
| Name (Chinese/English) | Descriptions | HackMD note | Program (GitHub link) |
| ---------------------- | ------------ | ------------ | --------------------- |
| Jim Huang | mathematical factorial function (`!` function) | [Lab1: R32I Simulator](/@sysprog/H1TpVYMdB) | [Factorial function](https://github.com/mortbopet/Ripes/blob/master/examples/assembly/Factorial%20function) |
| 黃偉宸 | Implementation a binary search procedure | [Lab1: R32I Simulator](https://hackmd.io/7oykWP_1SCKVAqAAZVKdUA) | [recursive binary search](https://github.com/murumura/risc-v) |
| 黃俞紘 | example explaination | [Lab1: R32I Simulator](https://hackmd.io/Z7Js-qjzRrqJLDJr-E5WvQ) | [example explaination](https://github.com/YuuuuH/NCKU_computer_architecture.git) |
| 張家銘(DC) | Lucas number | [Lab1: R32I Simulator](https://hackmd.io/DfjUcqxxSLeI7gzVc16GeA) | [Lucas number](https://github.com/dc-tw/NCKU-CA/blob/master/lab1.as) |
|王昱翔 | Multiplier | [Lab1: R32I Simulator](https://hackmd.io/atHu-zjwSbKJeF45nBYp6g)| [Multiplier](https://github.com/dck9661/computer-Architecture)|
|林家葦 | bit reverse | [Lab1: R32I Simulator](https://hackmd.io/MFuJDtz9RkW6QF2_fxJs-g) | [bit reverse](https://github.com/CCUWayen/Computer-Architecture/blob/master/assignment1/bit_reverse.s) |
|Soonmyun Jang | Prime number | [Lab1: R32I Simulator](https://hackmd.io/tqDdrPv1T--w6vk6JS9Q0w) | [Prime number](https://github.com/JANGSOONMYUN/ComputerArchitecture/blob/master/Assignment1_RISC-V/PrimeNumbers.as) |
|周沛辰| Sum of First N Natural Numbers |[Lab1: R32I Simulator](https://hackmd.io/PEtvFeJbQ06f2dLZ4TUcnQ) | [Sum of First N Natural Numbers](https://github.com/sq0332ppps/Computer-architecture/blob/master/Sum-of-First-N-Natural-Numbers) |
|戴宏諺| Permutations(nCk) with recursion| [Lab1: R32I Simulator](https://hackmd.io/@kksweet8845/lab1r32i) | [Permutations(nCk) with recusion](https://hackmd.io/@kksweet8845/lab1r32i)|
|陳冠廷| 32bit djb2 hash function | [Lab1: R32I Simulator](https://hackmd.io/cnJkFOFpR2mLOE8JeA6n2w) |
|黃瀚群| Tower of Hanoi |[Lab1: R32I Simulator](https://hackmd.io/-Qw9PyqnSrWbSXpkfNzkbA)| [Tower of Hanoi](https://github.com/hanqun0723/Computer_Architecture/blob/master/Tower_Of_Hanoi)
|林於縉| Printing to the Console |[Lab1: R32I Simulator](https://hackmd.io/W1BkbUYrQm-5a_uFOke9rw?view)|[Printing to the Console](https://github.com/fishotw/CA_HW/blob/master/hw1.txt) |
Rasmus Pettersson | Basic switch case with console print | [Lab1: R32I Simulator](https://github.com/Trakt0r22/Computer_Architecture_Homework_1) | [Switch case with console print](https://github.com/Trakt0r22/Computer_Architecture_Homework_1)
|曾士峰| 9*9 Multiplication Table |[Lab1: R32I Simulator](https://hackmd.io/@xl86305955/CA_LAB1_R32I_Simulator)| [9*9 Multiplication Table](https://github.com/xl86305955/Mutiplication-table-in-RISCV)
|林聖堯| Sort 1~5 With Bubble Sort |[Lab1: R32I Simulator](https://hackmd.io/@_01X9rimQmWH33Djf8QhoA/HJ1QiTzYB) | [Bubble_sort](https://github.com/Shengyuu/Assignment_computer_arch)
|潘家瑞/Suraj Pramanik|N-th Catalan number|[Lab1: R32I Simulator](https://hackmd.io/99VFE5ouSym6zBTcO-0tDQ)|
|李佶龍| POW Function |[Lab1: R32I Simulator](https://hackmd.io/@Ghyf3NaZSPCTEtBC4kgqMg/BkHjkySFr)| [Pow Function](https://github.com/leolee2017/Computer_Architecture/blob/master/Pow_Function)