Introduction to Computer Organization: A Guide to X86-64 Assembly Language and Gnu/Linux
This tutorial-style book provides an introductory look under the hood of a modern computer. It covers fundamental topics like data storage formats, computer arithmetic, basic data types, logic gates and circuits, and the CPU. Unlike other books about assembly language and computer organization, Introduction to Computer Organization is written with the understanding that most programmers will never have to write x86-64 assembly language or design hardware. This book is written to give those programmers a practical and concrete understanding of what's happening in a computer in the hopes that this knowledge will help them become a better programmer in their chosen field. You'll learn how transistors are used to construct the binary switches that are used to implement the logic circuits that make up a computer; how these circuits are programmed to implement basic programming constructs; and how data items are organized and manipulated. By the end of the book you should have a strong understanding of how binary is used to store data; how Boolean logic works, and how it's implemented in a computer; the basics of computer hardware; and how to use assembly language to implement things like program flow and Input/Output.
Bob Plantz is a retired professor who taught at Sonoma State for 21 years. At Sonoma State, Bob taught all variety of core classes, as well as several electives. Before working as a professor, Plantz was working in the industry both at companies like Syntex and Coherent and as a self-employed software engineer.