Book Image

Modern Computer Architecture and Organization

By : Jim Ledin
Book Image

Modern Computer Architecture and Organization

By: Jim Ledin

Overview of this book

Are you a software developer, systems designer, or computer architecture student looking for a methodical introduction to digital device architectures but overwhelmed by their complexity? This book will help you to learn how modern computer systems work, from the lowest level of transistor switching to the macro view of collaborating multiprocessor servers. You'll gain unique insights into the internal behavior of processors that execute the code developed in high-level languages and enable you to design more efficient and scalable software systems. The book will teach you the fundamentals of computer systems including transistors, logic gates, sequential logic, and instruction operations. You will learn details of modern processor architectures and instruction sets including x86, x64, ARM, and RISC-V. You will see how to implement a RISC-V processor in a low-cost FPGA board and how to write a quantum computing program and run it on an actual quantum computer. By the end of this book, you will have a thorough understanding of modern processor and computer architectures and the future directions these architectures are likely to take.
Table of Contents (20 chapters)
1
Section 1: Fundamentals of Computer Architecture
8
Section 2: Processor Architectures and Instruction Sets
14
Section 3: Applications of Computer Architecture

Answer

Create a new Freedom Studio project using the same steps as in Exercise 1 in this chapter. Locate the hello.c file in the src folder in the Project window.

  1. Right-click on the file and rename it to hello.s.
  2. Create your assembly language source code within the hello.s file. The Ex__3_riscv_expr.s file contains the following example solution to this exercise:
    .section .text
    .global main
    main:
        # Reserve stack space and save the return address
        addi    sp, sp, -16
        sd      ra, 0(sp)
        # Print the leading output string
        la      a0, msg1
        jal     ra, puts
        # Compute [(129 – 66) * (445 + 136)] / 3
        addi    a0, zero, 129
        addi    a0, a0, -66
        addi    a1, zero, 445
        add     a1, a1, 136
        mul     a0, a1, a0
        addi    a1, zero, 3
        divu    a0, a0, a1
        # Print the upper byte of the result
        sw      a0, 8(sp)
        srl     a0, a0, 8
        jal     ra, print_byte
        # Print the lower byte of the result
        lw      a0, 8(sp)
        jal...