# Assignment1: RISC-V Assembly and Instruction Pipeline > Due: ==Oct 5, 2020== ## Requirements 1. Following the instructions of [Lab1: RV32I Simulator](/@sysprog/H1TpVYMdB), you shall write RISC-V assembly programs ([RV32I](https://en.wikipedia.org/wiki/RISC-V) ISA) such as calculating Fibonacci numbers and output to the console with environment calls. * Don't implement the same subject as others do. Your program shall be different. * Your program(s) MUST contain loops (or recursive calls) and conditional branches. * You have to ensure the program fully 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/@oR8-QX4TQzGKDJ72DmqDUg/SJrNq1QuB) > :warning: Do not modify this note. * Insert your HackMD notes and RISC-V assembly programs in the following table. * Of course, you MUST write in English. ## Fill in the table for your homework | Formal given name | Descriptions | HackMD note | Program (GitHub link) | |:-----------------:| ---------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | Sample1 | [Lucas number](https://en.wikipedia.org/wiki/Lucas_number) | [Lab1: RV32I Simulator](https://hackmd.io/@lW44vTK7QuugZyKsKT1eBg/rkc_DyXur) | [Lucas Number](https://github.com/dc-tw/NCKU-CA/blob/master/lab1.as) | | Sample2 | Multiplier | [Lab1: RV32I Simulator](https://hackmd.io/@oR8-QX4TQzGKDJ72DmqDUg/SJrNq1QuB) | [Multiplier](https://github.com/dck9661/computer-Architecture) | | Sample3 | bit reverse | [Lab1: RV32I Simulator](https://hackmd.io/@4BjpaFDLSNuA6FyRpybMdA/rkY6FWXuB) | [bit reverse](https://github.com/CCUWayen/Computer-Architecture/blob/master/assignment1/bit_reverse.s) | | Sample4 | Permutations(nCk) with recursion | [Lab1: RV32I Simulator](https://hackmd.io/@kksweet8845/lab1r32i) | - | | 呂紹樺 :+1: | Convolution sum | [Lab1: RV32I Simulator](/hXZ0XVxTTLexGeQXfcj6aA) | [Convolution sum](https://github.com/demonsome/RISCV_project.git) | | 吳昱宗 | IsPrime | [Lab1: RV32I Simulator](https://hackmd.io/@Zong55555/rkPsQPPrP) | [Isprime](https://github.com/ph81918/Isprime.git) | | 林霆寬 | Fibonacci number | [Lab1: RV32I Simulator](https://hackmd.io/pDfcdWwSQqmt3oXsHPXueA?view) | [Fibonacci number](https://github.com/SmallHanley/Computer-Architecture/blob/master/lab1.asm) | | 陳柏廷 | Greatest common divisor | [Lab1: RV32I Simulator](https://hackmd.io/@Max-Chen/SJ4sTXoBD)| [Greatest common divisor](https://github.com/NCKUMaxSnake/ComputerArchitecture/blob/master/assignment1/gcd.s)| | 許龍君 | Find largest element | [Lab1: RV32I Simulator](https://hackmd.io/Z-MxXzmbQyeAeWJxzZhB8A?view) | [Find largest element](https://github.com/jayhua267/Computer_Architecture-HW1)| | 鄭育丞 | Single number (LeetCode 137) | [Lab1: RV32I Simulator](https://hackmd.io/@eecheng/HJojUvdrw) | [singleNumber](https://gist.github.com/eecheng87/7063130a1ca057a1288540c956589ce9) | | 陳冠宇| Digits of $\pi$ | [Lab 1: RV32I Simulator](https://hackmd.io/@guaneec/arch2020-a1) | [Digits of $\pi$](https://github.com/guaneec/arch2020/blob/master/a1/pi.s) | | 謝宜紘 | print square | [Lab1: RV32I Simulator](https://hackmd.io/@hsieh22/CA_lab1) | [print square](https://github.com/hsiehong/Computer-Architecture/blob/master/printSquare.s) | | 曾紹銘 | Power function | [Lab1: RV32I Simulator](https://hackmd.io/o1yeSGzDQO2LmbKXEoBC_g?both) | [Power function](https://github.com/shauming1020/RISC-V-Assignment1/tree/master) | | 洪邵澤 | GCD (Greatest Common Divisor) | [Lab1: RV32I Simulator](https://hackmd.io/@cccccs100203/lab1-RISC-V) | [GCD](https://github.com/ccs100203/RV32I/blob/main/HW1/GCD.s) | | 王廣達 | Collatz conjecture |[Lab1: RV32I Simulator](https://hackmd.io/ne5JUDBxTc6MJMjB-cX_iw) | [Collatz conjecture](https://github.com/KuangDW/risc-v)| | 王傑世 | Bubble Sort | [Lab1: RV32I Simulator](https://hackmd.io/4-oWQOprRnCLu3ZeJy31kA?view) | [Bubble Sort](https://github.com/Wder4/Computer_Architecture/blob/main/BubbleSort/BBSort.s) | | 林楷倫 | Selection Sort | [Lab1: RV32I Simulator](https://hackmd.io/@kevinlin30292/2020ca-hw1) | [SelectionSort](https://github.com/kevin30292/CA-RISCV-Pipeline.git) | 江承緯 | Binary Search | [Lab1: RV32I Simulator](https://hackmd.io/aAz3-wW7SeGEmq-e1v_N6w) | [Binary Search](https://github.com/JohnCWChiang/ncku2020fallCA) | | 劉安倫 | Pascal | [Lab1: RV32I Simulator](https://hackmd.io/@T7ylUnSvTiq64-ES92UciA/SJsHK5k8w) | [Pascal](https://github.com/liuallen871219/computer_architecture-hw1) | | 江松穎 | Multi-level Difference Arithmetic Sequence | [Lab1: RV32I Simulator](/7CQSp7jhTyGG3lDBh_Mevg) | [Multi-level Difference Arithmetic Sequence](https://github.com/Uduru0522/Multi-Level-Difference-Arithmetic-Sequence) | | 鄭惟 | Count Leading Zeros | [Lab1: RV32I Simulator](https://hackmd.io/@WeiCheng14159/rkUifs2Hw) | [Count Leading Zeros](https://github.com/WeiCheng14159/ncku_ca_hw1) | | 段雅培 | Dot Product | [Lab1: RV32I Simulator](https://hackmd.io/@kaeteyaruyo/risc-v-hw1) | [Dot Product](https://github.com/kaeteyaruyo/Computer-Architecture/tree/master/hw1) | | 楊承翰 | Hanoi Tower | [Lab1: RV32I Simulator](https://hackmd.io/SvOdYVW9Qi6aASB4oCRvag?view) | [Hanoi Tower](https://github.com/sam2468sam/Computer-Architecture) | | 汪宗諺 | Matrix multiplication algorithm | [Lab1: RV32I Simulator](https://hackmd.io/VnB4jXgGS3ib1I1b1GnhqA?view) | [Matrix multiplication algorithm](https://github.com/eddie9712/Computer_Architecture/tree/main/riscv/Lab1) | | 曾鈜寬 | Factorial | [Lab1: RV32I Simulator](https://hackmd.io/@Tim096/rJOiVg_8v) | [Factorial](https://hackmd.io/@Tim096/rJOiVg_8v) | | 施丞宥 | Insertion Sort | [Lab1: RV32I Simulator](https://hackmd.io/PdOkIOH1Qt-EK3O_P9a8uA?view) | [Insertion Sort](https://github.com/charley871103/Lab1-RV32I-Simulator) | | 魏晉成 | Format printer | [Lab1: RV32I Simulator](https://hackmd.io/@H-L-Parker/S1dMsbx8w) | [Format printer](https://github.com/ParkerMactavish/NCKU_CA_109/blob/master/HW1/formatPrinter.s)| | 徐郁淞 | Two Sum (leetcode 1) | [Lab1: RV32I Simulator](https://hackmd.io/@joe-U16/HJNcL3fIP) | [Two Sum (leetcode 1)](https://github.com/joe-U16/Lab1-RV32I-Simulator) | | 夏晨鈞 |make isoceles triangle | [Lab1: RV32I Simulator](https://hackmd.io/@VVxC4Ev2ReSpSxAkM58NGg/HyWvRqd8v) | [make isoceles triangle](https://github.com/handsomehsia/Lab1-RV32I-Simulator)| | 林柏維 :+1: | MergeSort |[Lab1: RV32I Simulator](https://hackmd.io/@waynelinbo/rJpBUiu8P) |[MergeSort](https://github.com/waynelinbo/Computer_Architecture_Lab1_MergeSort) |