Computer Organization, free online textbook
The "Computer Organization" e-book by Stephen Marz provides a comprehensive guide on computer organization, covering binary numbers, CPU instructions, digital logic, and RISC-V assembly programming to support student learning.
Read original articleThe "Computer Organization" e-book by Stephen Marz serves as a comprehensive guide to understanding the fundamental concepts of computer organization. It begins with an introduction to the subject, outlining the key elements that will be explored throughout the text. The second chapter focuses on binary numbers and number systems, emphasizing the importance of binary in computer systems due to their Boolean nature. The third chapter delves into CPU instructions, explaining how assembly instructions are converted into machine code. Chapter four examines digital logic, detailing the components that constitute a CPU, including both combinational and sequential logic. The fifth chapter integrates the previous concepts, illustrating how digital logic components and instructions work together to execute tasks. The appendices provide practical resources, including examples of RISC-V assembly programs, advanced programming techniques, and guidance for writing custom RISC-V assembly programs. This e-book is designed to complement course lectures and serves as a valuable resource for students studying computer organization.
- The e-book covers essential topics in computer organization, including binary numbers and CPU instructions.
- It explains the relationship between digital logic components and their functions within a CPU.
- Practical appendices offer examples and guidance for RISC-V assembly programming.
- The content is structured to support course lectures and enhance student learning.
- Stephen Marz is the author and can be contacted for errors or changes.
Related
From the Transistor to the Web Browser
A GitHub course titled "From the Transistor to the Web Browser" covers topics like transistors, hardware coding, processors, compilers, operating systems, and web browsers. It explores computing evolution from basics to complexities.
Driving Compilers
The article outlines the author's journey learning C and C++, focusing on the compilation process often overlooked in programming literature. It introduces a series to clarify executable creation in a Linux environment.
I don't know how CPUs work so I simulated one in code (2019)
The author simulated an 8-bit CPU to understand computer architecture, learning about bits, ALU functions, and I/O communication, while planning to explore advanced topics like RISC architectures and modern CPU features.
A Friendly Introduction to Assembly for High-Level Programmers
The article introduces assembly language to high-level programmers, focusing on x86-64 assembly with Intel syntax, covering instructions, registers, and file structure, while encouraging experimentation with code snippets.
Compiling to Assembly from Scratch [free to read online]
"Compiling to Assembly from Scratch" by Vladimir Keleshev teaches compiler theory and assembly programming, focusing on ARM 32-bit instruction set, with resources available online and on GitHub.
Stephen also wrote a great blog article series on building your own RISC-V OS in Rust (https://osblog.stephenmarz.com), so I'm really looking forward to reading his computer architecture book (and probably using it in my course).
assembler/virtual_machine.py: https://github.com/gcallah/Emu86/blob/master/assembler/virtu... :
- class RISCVMachine(VirtualMachine): https://github.com/gcallah/Emu86/blob/master/assembler/virtu...
- class WASMMachine(VirtualMachine): https://github.com/gcallah/Emu86/blob/master/assembler/virtu...
assembler/RISCV/key_words.py: https://github.com/gcallah/Emu86/blob/master/assembler/RISCV...
assembler/RISCV/arithmetic.py: https://github.com/gcallah/Emu86/blob/master/assembler/RISCV...
simd, avx, X86S, x86-64-v4,
x86-64 > Microarchitecture levels: https://en.wikipedia.org/wiki/X86-64#Microarchitecture_level...
The new x86 Alliance, Intel-AMD x86 ISA overhaul org.
"Show HN: RISC-V Linux Terminal emulated via WASM" (2023) and ARM Tetris: https://news.ycombinator.com/item?id=37286019 https://westurner.github.io/hnlog/#story-37286019
From https://news.ycombinator.com/item?id=37086102 :
> [ Bindiff, Diaphora, Ghidra + GDB, ]
> Category:Instruction_set_listings has x86 but no aarch64 [or RISC-V] https://en.wikipedia.org/wiki/Category:Instruction_set_listi...
> /? jupyter asm [kernel]:
> - "Introduction to Assembly Language Tutorial.ipynb" w/ the emu86 jupyter kernel which shows register state after ops: https://github.com/gcallah/Emu86/blob/master/kernels/Introdu...
> - it looks like emu86 already also supports RISC, MIPS, and WASM but not yet ARM:
> - DeepHorizons/iarm: https://github.com/DeepHorizons/iarm/blob/master/iarm_kernel...
JupyterLite docs > adding other kernels: https://jupyterlite.readthedocs.io/en/latest/howto/configure...
Related
From the Transistor to the Web Browser
A GitHub course titled "From the Transistor to the Web Browser" covers topics like transistors, hardware coding, processors, compilers, operating systems, and web browsers. It explores computing evolution from basics to complexities.
Driving Compilers
The article outlines the author's journey learning C and C++, focusing on the compilation process often overlooked in programming literature. It introduces a series to clarify executable creation in a Linux environment.
I don't know how CPUs work so I simulated one in code (2019)
The author simulated an 8-bit CPU to understand computer architecture, learning about bits, ALU functions, and I/O communication, while planning to explore advanced topics like RISC architectures and modern CPU features.
A Friendly Introduction to Assembly for High-Level Programmers
The article introduces assembly language to high-level programmers, focusing on x86-64 assembly with Intel syntax, covering instructions, registers, and file structure, while encouraging experimentation with code snippets.
Compiling to Assembly from Scratch [free to read online]
"Compiling to Assembly from Scratch" by Vladimir Keleshev teaches compiler theory and assembly programming, focusing on ARM 32-bit instruction set, with resources available online and on GitHub.