Computer Architecture And MIPS Assembly Language Programming
Last updated 5/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 15.06 GB | Duration: 24h 48m
Last updated 5/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 15.06 GB | Duration: 24h 48m
with Tens of Solved Examples and Assignments with solutions, lecture notes, Exam samples with solution, and tutorials.
What you'll learn
MIPS Instruction Set Architecture
MIPS Assembly Programming - Theory and Practice with tens of examples
RISC ISA Architectures
Single Cycle and Multi-Cycle Processor Design
Arithmetic and Logic Unit (ALU) Design
Design the Control Unit of a Real Processor
Convert MIPS Assembly Instructions into Machine Codes
Understand Computer internal parts such as ALU, Datapath and control Unit
Understand CPU (Central Process Unit) and how it works
Requirements
Basics of digital logic design
Basic knowledge of programming in any high level languages( C, python , …)
Description
Welcome to the Computer Architectures and MIPS Assembly Programming Course!* Updated in Feb 2024* Several Detailed Explanation Lecture Videos are Uploaded(more than 5 hours)This course's major purpose is to outline the architectural aspect of computers. In other words, it is concerned with how computers, as machines, execute instructions at many levels, including the hardware and assembly language levels. Students learn about the fundamental technological structure and evolution of computers, fundamental hardware components, MIPS instructions set architectures and its assembly language, and processor microarchitecture including the control unit (MIPS is used as an example).This course can be divided into 2 chapters: Software and Hardware. In the software chapter (Sections 1-3) you will learn how to write an assembly language program for MIPS architecture and in the hardware chapter (Sections 4-7), I will show you how the internal components of the MIPS processor work together to execute your program. Finally, I prepared several tutorials and assignments with their solutions to help you better understand this topic.The emphasis of the course is on understanding how computers work. This will provide a basis for further study of computer architecture and computer software. The MIPS processor, the subject of this course, has a well designed architecture and is particularly fruitful to study. However, the goal of the course is not to turn you into a MIPS programmer, but to give you an understanding of all computer systems.Course Outline1. Introduction to MIPS Assembly Programming Memory Operand: Load Word & Store Word in MIPS Assembly Language Immediate Addressing Mode & Signed/ Unsigned data in MIPS Assembly LanguageADD, ADDI, ADDU, ADDIU, SUB, LW, and SW Instructions in MIPSBranches and Jump Instruction in MIPS Assembly Language + how to read arrayLoop Structure in MIPS Assembly LanguageThe Other Comparison Instruction + Logical Instructions in MIPSMIPS Alignment Restrictions: .align, .byte .half and .word Assembler's directiveHow Data will be Stored in Memory in the MIPS Architecture?MIPS System CallSimple I/O and MIPS System Calls: Hello World!Simple I/O and MIPS System Calls: Read 2 Numbers and Display their SummationSimple I/O and MIPS System Calls: an Example of IF-ELSE Structure in MIPSSimple I/O and MIPS System Calls: an Example of IF-ELSE-IF Structure in MIPSMIPS Divide Instruction + Determine whether the input number is odd or evenMIPS Example: Read 5 Numbers and Print Their AverageMIPS Multiplication InstructionMIPS Example: Display the Multiplication of 2 numbers + Factorial ExampleMIPS Example: Add Two Integer Numbers2. Learn MIPS Programming with ExamplesMIPS Example: Read a char and determine whether it is an uppercase, lowercase or etc. in MIPSMIPS Example: Determine the number of zeros in the binary notation of a numberMIPS Example: Read two numbers A and B and compute and print (A+2*B)/5MIPS Example: Convert C code to MIPS AssemblyMIPS Examples: Learn How to Divide and MultiplicationMIPS Example: Find the Maximum Element of an Array in MIPS Assembly LanguageMIPS Example: Find Both Maximum and Minimum of an Input Integer ArrayMIPS Example: Nested IF-ELSE IF StructureMIPS Example: Convert a capital letter to lowercase and vice versaMIPS Example: Check the input character and determine is it alphabet, digit or .MIPS Example: Read 2 operands and an operator and print the resultMIPS Example: Compute the sum of N integers: (1 + 2 + … + N), While Structure3.Functions in MIPS Assembly Language with Several ExamplesFunctions in MIPS - Jump and Link (jal) & jump Register(jr) InstructionsFunctions in MIPS - How to Pass Arguments to the Functions?Functions in MIPS - Who saves the register? Spilling RegistersFunctions in MIPS - MIPS's conventions to split register spilling choresFunctions in MIPS - MIPS Stack and Push and Pop ImplementationsFunctions in MIPS - Factorial Function MIPS Example: Write a function to read N numbers and store them in an arrayMIPS Example: Write a function to reverse an input arrayMIPS Example: Write a function to count the number of divisors of an argument4.MIPS Instruction EncodingMIPS Instruction Encoding: R-Type InstructionsMIPS Instruction Encoding: I-Type InstructionsMIPS Instruction Encoding : J-Type Instruction5. Computer Architecture: Processor Datapath, ALU and Register File DesignGeneric Datapath and Register Files Part 1Generic Datapath and Register Files Part 2ALU Design Part 1ALU Design Part 26. Single-Cycle Datapath for MIPS ArchitectureMIPS Datapath OverviewDatapath for Fetching an Instruction and increment PC in MIPS ArchitectureDatapath for R-type Instruction in MIPS ArchitectureMIPS Datapath for Load Word (LW) and Store Word (SW) InstructionsDatapath for Branch Instructions in MIPS ArchitectureCombining the Datapaths of R-type Instructions and LW/SW InstructionsIntegrating the datapaths of R-Type, Memory and Branch Instructions in MIPS ArcR-Type + Memory Instructions Data PathControl Unit for the Single-cycle MIPS ProcessorALU Control Unit Design for MIPS Architecture7. Multi-Cycle Datapath for MIPS ArchitectureMulti-Cycle Datapath for MIPS Architecture Part 1Multi-Cycle Datapath for MIPS Architecture Part 2Multi-Cycle Datapath for MIPS Architecture Part 3Multi-Cycle Datapath for MIPS Architecture Part 48. Tutorials + AssignmentsTutorial + Assignment: Introduction to MARSTutorial + Assignment: Introduction to MIPS Assembly ProgrammingTutorial + Assignment: Integer ArithmeticTutorial + Assignment: Flow ControlTutorial + Assignment: Arrays and FilesTutorial + Assignment: Integer Multiplication and DivisionTutorial + Assignment: MIPS Functions and the Stack SegmentFibonacci sequenceCompute the summation of even numbers between 2 input numbersSimple I/O in MIPS Assembly LanguageIF-ELSE-IF Structure in MIPS Assembly LanguageSingle-Cycle Datapath Quiz with Video SolutionMulti-cycle DatapthThe course is Example-based. Almost every lecture and component of the course directly leads to a hands-on laboratory assignment with a solution. The more you practice with MIPS hardware and software, the more proficient you will become.I use lots and lots of examples. I take you step-by-step through the lessons – each time providing sample code and documentation to make sure you are supported through the course.The course does not waste your time. From the very beginning, we jump right into your first project – Let's Get Started.I am here to help. I am an educator with a singular focus on providing a meaningful experience for my students. And, while I cannot do the work for you, I am willing to work WITH you to help you succeed.The goal of this course is to shed light on the obscure interface layer between hardware and software. In this context, we will go over instruction set architectures, assembly programming, computer/memory organization, machine language conversion, data bus, and sub-routines, which are all important topics in computer architecture. This course teaches students about the core hardware components of a computer and how they interact with one another. It educates students about the computer's many layers, such as the application level, operating system level, assembly language level, and machine language level.Computer architectures, which I recommend to anyone working on electronic system design or computer programming and who is interested in processor design, have opened many doors for me in my own career. I hope you find this tutorial useful as well.
Computer or Electrical Engineering students,Programmers who want to learn about computer hardware / software interface,Everyone who is interested in Computer / Processor structures!,Candidates considering applying for embedded system design / programming positions in defense industry, aerospace, R&D and IT companies