We may earn an affiliate commission when you visit our partners.
Ross McGowan

Design a CPU3

Unlock the mysteries of computer architecture and delve into the heart of computational brilliance with our groundbreaking course, "Design a CPU3." As the third installment in our series, this module focuses on the creation of bespoke assembly language libraries, equipping you with the tools and knowledge to wield the true potential of a CPU.

Libraries

Embark on a journey through the intricacies of mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. Our meticulously curated curriculum encompasses an array of indispensable routines, including:

Read more

Design a CPU3

Unlock the mysteries of computer architecture and delve into the heart of computational brilliance with our groundbreaking course, "Design a CPU3." As the third installment in our series, this module focuses on the creation of bespoke assembly language libraries, equipping you with the tools and knowledge to wield the true potential of a CPU.

Libraries

Embark on a journey through the intricacies of mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. Our meticulously curated curriculum encompasses an array of indispensable routines, including:

  • Memory Mapping: Understand the core of memory management, an indispensable skill for efficient programming.

  • Mathematics: From basic operations like power functions, modulo and factorials to trigonometry (sine, cosine, and tangent).

  • Graphics and Geometry: Dive into the world of graphics programming with algorithms like Bresenham's circle, triangle plotting, and vector manipulation (addition, multiplication, scalar operations, dot and cross products).

  • Matrix Operations: Master matrix manipulation techniques, including multiplication, addition, subtraction, determinants, and transposition.

  • Complex Numbers: Explore the realm of complex arithmetic, covering addition, subtraction, multiplication, conjugates, and more.

  • String Handling: Learn efficient string manipulation techniques such as copying, concatenation, and length calculation.

  • Fixed-Point Arithmetic: Delve into fixed-point numbers, tackling addition, multiplication, division, power functions, and trigonometric operations.

Hands-On Learning in a Modern Environment

Our course doesn’t just stop at theory; it’s a practical, hands-on experience. You'll wield the power of Visual Studio Code as your assembly language playground, crafting code and witnessing it transform into machine code before your eyes. With our guidance, you'll gain the expertise to navigate this powerful environment confidently.

Building upon Architecture: Your Path to Expertise

This course isn't just a standalone endeavor. It's the natural progression from our first and second parts, which centered on CPU architecture. With "Design a CPU3," you elevate your understanding from hardware design to programming.

Why Choose Our Course?

  1. Comprehensive Curriculum: Our course leaves no stone unturned, offering a rich tapestry of essential concepts and practical applications.

  2. Practical Application: Dive into real-world scenarios and emerge with the ability to implement these libraries in various computational projects.

  3. Expert Guidance: Learn from a seasoned professional with hands-on experience in both CPU architecture and assembly language programming.

  4. Future-Proof Skills: Equip yourself with timeless skills that transcend specific technologies, ensuring your relevance in a rapidly evolving tech landscape.

Join Us and Unleash the Power of Code

Are you ready to transcend the ordinary and embark on a journey that unlocks the true potential of computers? Enroll in "Design a CPU3" today and become the architect of computational marvels. Elevate your skills, expand your horizons, and wield the power of code with confidence.

Enroll now

What's inside

Learning objectives

  • Mathematics: power functions, modulo, factorials, square roots.
  • Graphics: bresenham's circle, triangles, plotting, and vector manipulation.
  • Matrices: multiplication, addition, subtraction, determinants, and transposition.
  • Complex numbers: addition, subtraction, multiplication, and conjugates.
  • String library: copying, concatenation, and length calculation.
  • Fixed point library: addition, multiplication, division, power functions, and trigonometry.
  • Visual studio code editor
  • Cpu architecture to practical coding with comprehensive libraries.

Syllabus

Introduction

Addendum
-----------

Note the last 16 bits of the ROM 0x7ff0 to 0x7fff are used for the memory mapped i / o ports as follows.

0x7fff0 - keyboard
0x7ff3 - display
0x7ff4 - graphics card 2
0x7ff5 - graphics card 1


Read more
Mathematics Library
Power Function
Call to Subroutine
Modulo Function
Factorial Function
Square Root Function
Graphics Library
Rectangles
New Assembler Setup
Bresenham's Circle Drawing Algorithm
Bresenham's Circle Drawing Algorithm in Assembly Language
Triangle
Plot
Taking Things to the Next Level
Visual Studio Code Editor
Assembler Update (You will need this one !!!)
Assembly Language Commands
Vectors
Vector Addition
Vector Subtraction
Multiplication by a Scalar
Magnitude of a Vector
Dot Product
Cross Product
Matrices
Multiplication
Matrix Addition and Subtraction
Matrix Multiplication by a Scalar
Determinant 2x2 Martix
Determinant 3x3 Matrix
Matrix Transpose
Matrix Multiplication
Complex Numbers
Complex Conjugate
Complex Addition and Subtraction
Complex Multiplication
String Library
String Length
String Concatenation
String Copy
Fixed Point Numbers
Addition and Subtraction
Taylor Series Sine Function
Taylor Series Cosine Function
Taylor Series Tangent Function
Taylor Series Exponential Function
Sine Function Full Domain
Cosine Function Full Domain
Tangent Function Full Domain
Parameterised Equations
Parametric Circle
Parametric Spiral
Parametric Lines
ChatGPT Generates Parametric Equations
Hex Calculator
Goodbye
Bonus Section
Bonus Lecture

Save this course

Save Design a CPU 3 to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Design a CPU 3 with these activities:
Review Assembly Language Fundamentals
Reinforce your understanding of assembly language syntax, addressing modes, and basic instructions to prepare for creating assembly language libraries.
Browse courses on Assembly Language
Show steps
  • Review assembly language tutorials and documentation.
  • Practice writing simple assembly programs.
  • Familiarize yourself with the target CPU architecture.
Read 'Code: The Hidden Language of Computer Hardware and Software'
Gain a deeper understanding of the underlying principles of computer hardware and software to better grasp the concepts of CPU design and assembly language programming.
View Melania on Amazon
Show steps
  • Read the book cover to cover.
  • Take notes on key concepts and examples.
  • Relate the concepts to the course syllabus.
Implement a Simple Calculator in Assembly
Apply your knowledge of assembly language to create a functional calculator that performs basic arithmetic operations, reinforcing your understanding of assembly language programming.
Show steps
  • Design the calculator's user interface and functionality.
  • Write assembly code to implement the calculator's logic.
  • Test and debug the calculator thoroughly.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Practice Matrix Operations in Assembly
Sharpen your skills in matrix manipulation by implementing matrix addition, subtraction, multiplication, and transposition in assembly language.
Show steps
  • Review matrix operations and their assembly language implementations.
  • Write assembly code to perform matrix operations.
  • Test your code with different matrix sizes and values.
Create a Visual Studio Code Extension for Assembly
Develop a Visual Studio Code extension that provides syntax highlighting, code completion, and debugging support for assembly language, enhancing your understanding of the development environment.
Show steps
  • Study the Visual Studio Code extension API.
  • Implement syntax highlighting and code completion features.
  • Add debugging support for assembly language programs.
  • Test and refine the extension.
Read 'Hacker's Delight'
Explore advanced programming techniques and optimizations relevant to assembly language to improve the efficiency and performance of your code.
View Hacker's Delight on Amazon
Show steps
  • Read the book and study the programming tricks.
  • Implement some of the tricks in assembly language.
  • Analyze the performance of the optimized code.
Contribute to an Open-Source Assembly Project
Gain practical experience by contributing to an open-source project that uses assembly language, collaborating with other developers and learning from their expertise.
Show steps
  • Find an open-source assembly project on GitHub or GitLab.
  • Study the project's codebase and documentation.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Design a CPU 3 will develop knowledge and skills that may be useful to these careers:
Assembly Programmer
An Assembly Programmer designs, develops, and maintains software using assembly language, which interacts directly with a computer's hardware. This course is a direct route to understanding the nuances of creating efficient and optimized assembly code. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. It helps you build a foundation for developing high-performance applications. The course will be especially helpful to Assembly Programmers because it covers memory management, which is very important in assembly.
Computer Graphics Programmer
A Computer Graphics Programmer develops algorithms and software for creating visual content. This course is directly relevant to understanding how to create bespoke graphics applications. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. This course will be very useful to Computer Graphics Programmers because it covers graphics and geometry algorithms like Bresenham's circle, triangle plotting, and vector manipulation in detail.
Firmware Engineer
A Firmware Engineer develops the low-level software that controls hardware devices. This course is an ideal way to get hands-on experience in creating assembly language code. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course is helpful because it teaches you how to create bespoke assembly language libraries, which is a critical skill for firmware development.
Computer Architect
A Computer Architect designs the structure and behavior of computer systems, including CPUs, memory systems, and networks. This course is very useful for someone who wants to understand the inner workings of a central processing unit. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course is helpful because it builds upon CPU architecture by teaching you how to create bespoke assembly language libraries, bridging the gap between hardware design and practical coding.
Reverse Engineer
A Reverse Engineer analyzes software or hardware to understand its design, functionality, and potential vulnerabilities. This course provides a strong foundation in assembly language, which is crucial for understanding compiled code. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course is helpful because it teaches you how to craft code and witness it transform into machine code, giving you a practical understanding of how software works at a low level.
Security Analyst
A Security Analyst protects computer systems and networks from cyber threats. While primarily focused on higher-level security measures, understanding assembly language can be beneficial for reverse engineering malware or analyzing system vulnerabilities at a low level. The course is helpful because it allows a security analyst to inspect the code that makes up the programs they are to protect. In doing so, they can pinpoint risks and vulnerabilities.
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests software and hardware for embedded systems, which are specialized computer systems within larger devices. This course may be useful to those interested in programming closer to the metal using assembly. One of the best tools for an Embedded Systems Engineer is the ability to program close to the hardware. This course focuses on Mathematics, String manipulation, Graphics rendering, and Fixed-Point arithmetic. The course will be especially helpful by teaching you to create bespoke assembly language libraries, which is a critical skill for embedded systems development.
High-Performance Computing Engineer
A High Performance Computing Engineer develops and optimizes software for supercomputers and other high-performance systems. This course is directly relevant to understanding how to optimize code at a low level. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course is helpful for High Performance Computing Engineers because it teaches you how to create bespoke assembly language libraries, which is a critical skill for maximizing performance on these systems.
Compiler Developer
A Compiler Developer creates and improves compilers, which translate high-level programming languages into machine code. This course provides essential knowledge of assembly language, which is often the target language for compilers. The course focuses on Mathematics, String manipulation, Graphics rendering, and Fixed-Point arithmetic. The course is helpful because it teaches you how to craft code and witness it transform into machine code, giving you a practical understanding of the compilation process.
Game Developer
A Game Developer creates video games for various platforms. This course can be helpful to those seeking to optimize performance for certain graphics and math routines. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course is helpful because it specifically covers graphics and geometry algorithms like Bresenham's circle, triangle plotting, and vector manipulation, which are essential for game development.
Operating Systems Developer
Operating Systems Developers create, maintain, and improve the core software that manages computer hardware and software resources. This course might be useful for those who want to better understand low-level programming and how to best use computing resources. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course is helpful because it teaches you to create bespoke assembly language libraries, which is a critical skill for optimizing operating system performance.
Cryptographer
A Cryptographer designs and analyzes encryption algorithms to secure data. Some cryptographic algorithms require very careful coding to prevent side channel attacks. This course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course may be helpful because it teaches you how to craft code and witness it transform into machine code, giving you a practical understanding of how software works at a low level and how to optimize its performance.
Robotics Engineer
A Robotics Engineer designs, builds, and tests robots and robotic systems. This course might be useful to those seeking to program motion planning or computer vision algorithms on a computationally limited device. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course is helpful because it covers matrix operations, vector manipulation, and fixed-point arithmetic, which are all essential for robotics programming.
Hardware Engineer
A Hardware Engineer designs, develops, and tests computer hardware components and systems. This course may be useful to Hardware Engineers who want to better understand how software interacts with hardware. The course focuses on mathematics, string manipulation, graphics rendering, and fixed-point arithmetic. The course is helpful because it builds upon CPU architecture, which is a critical component of computer hardware.
Data Scientist
A Data Scientist analyzes large datasets and develops algorithms to extract insights and make predictions. While typically relying on higher-level languages and libraries, understanding low-level optimizations can be beneficial, particularly in resource-constrained environments or when optimizing computationally intensive algorithms. This course may be useful to data scientists as it covers mathematics, string manipulation, and fixed-point arithmetic. The course might be helpful because it teaches you how to craft assembly language libraries, which can be used to optimize specific data processing tasks.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Design a CPU 3.
Provides a comprehensive overview of how computers work, starting from basic electrical circuits and building up to complex software. It explains the fundamental concepts of computer architecture and assembly language in an accessible way. Reading this book will provide a solid foundation for understanding the material covered in the course. It is particularly helpful for students who are new to computer architecture or assembly language.
Collection of programming tricks and techniques, many of which are relevant to assembly language programming. It covers topics such as bit manipulation, arithmetic, and data structures. Reading this book will help you write more efficient and elegant assembly code. It is particularly useful for optimizing performance-critical sections of your code. This book is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser