Write Great Code, Volume 1, 2nd Edition
Book information
Description
Understanding the Machine, the first volume in the landmark Write Great Code Series by Randall Hyde, explains the underlying mechanics of how a computer works. Like the highly regarded first edition, this second edition of Understanding the Machine covers machine organization and computer science topics like the CPU, machine architecture, memory and cache organization, I/O and peripheral devices, and how the decoding and execution of machine instructions affects software performance. This edition has been updated to cover 64-bit machines, newer peripheral devices, larger memory systems, large-scale SSDs, and newer CPUs like those used in personal computers and tablets. Cover Page Title Page Copyright Page About the Author About the Technical Reviewer BRIEF CONTENTS CONTENTS IN DETAIL ACKNOWLEDGMENTS 1 WHAT YOU NEED TO KNOW TO WRITE GREAT CODE 1.1 The Write Great Code Series 1.2 What This Book Covers 1.3 Assumptions This Book Makes 1.4 Characteristics of Great Code 1.5 The Environment for This Book 1.6 Additional Tips 1.7 For More Information 2 NUMERIC REPRESENTATION 2.1 What Is a Number? 2.2 Numbering Systems 2.3 Numeric/String Conversions 2.4 Internal Numeric Representation 2.5 Signed and Unsigned Numbers 2.6 Useful Properties of Binary Numbers 2.7 Sign Extension, Zero Extension, and Contraction 2.8 Saturation 2.9 Binary-Coded Decimal Representation 2.10 Fixed-Point Representation 2.11 Scaled Numeric Formats 2.12 Rational Representation 2.13 For More Information 3 BINARY ARITHMETIC AND BIT OPERATIONS 3.1 Arithmetic Operations on Binary and Hexadecimal Numbers 3.2 Logical Operations on Bits 3.3 Logical Operations on Binary Numbers and Bit Strings 3.4 Useful Bit Operations 3.5 Shifts and Rotates 3.6 Bit Fields and Packed Data 3.7 Packing and Unpacking Data 3.8 For More Information 4 FLOATING-POINT REPRESENTATION 4.1 Introduction to Floating-Point Arithmetic 4.2 IEEE Floating-Point Formats 4.3 Normalization and Denormalized Values 4.4 Rounding 4.5 Special Floating-Point Values 4.6 Floating-Point Exceptions 4.7 Floating-Point Operations 4.8 For More Information 5 CHARACTER REPRESENTATION 5.1 Character Data 5.2 Character Strings 5.3 Character Set Data Types 5.4 Designing Your Own Character Set 5.5 For More Information 6 MEMORY ORGANIZATION AND ACCESS 6.1 The Basic System Components 6.2 Physical Organization of Memory 6.3 Big-Endian vs. Little-Endian Organization 6.4 The System Clock 6.5 CPU Memory Access 6.6 For More Information 7 COMPOSITE DATA TYPES AND MEMORY OBJECTS 7.1 Pointer Types 7.2 Arrays 7.3 Records/Structures 7.4 Discriminant Unions 7.5 Classes 7.6 Classes in C++ 7.7 Classes in Java 7.8 Classes in Swift 7.9 Protocols and Interfaces 7.10 Generics and Templates 7.11 For More Information 8 BOOLEAN LOGIC AND DIGITAL DESIGN 8.1 Boolean Algebra 8.2 Boolean Functions and Truth Tables 8.3 Function Numbers 8.4 Algebraic Manipulation of Boolean Expressions 8.5 Canonical Forms 8.6 Simplification of Boolean Functions 8.7 What Does This Have to Do with Computers, Anyway? 8.8 For More Information 9 CPU ARCHITECTURE 9.1 Basic CPU Design 9.2 Decoding and Executing Instructions: Random Logic vs. Microcode 9.3 Executing Instructions, Step by Step 9.4 RISC vs. CISC: Improving Performance by Executing More, Faster, Instructions 9.5 Parallelism: The Key to Faster Processing 9.6 For More Information 10 INSTRUCTION SET ARCHITECTURE 10.1 The Importance of Instruction Set Design 10.2 Basic Instruction Design Goals 10.3 The Y86 Hypothetical Processor 10.4 Encoding 80x86 Instructions 10.5 Implications of Instruction Set Design to the Programmer 10.6 For More Information 11 MEMORY ARCHITECTURE AND ORGANIZATION 11.1 The Memory Hierarchy 11.2 How the Memory Hierarchy Operates 11.3 Relative Performance of Memory Subsystems 11.4 Cache Architecture 11.5 NUMA and Peripheral Devices 11.6 Virtual Memory, Memory Protection, and Paging 11.7 Writing Software That Is Cognizant of the Memory Hierarchy 11.8 Runtime Memory Organization 11.9 For More Information 12 INPUT AND OUTPUT 12.1 Connecting a CPU to the Outside World 12.2 Other Ways to Connect Ports to the System 12.3 I/O Mechanisms 12.4 I/O Speed Hierarchy 12.5 System Buses and Data Transfer Rates 12.6 Buffering 12.7 Handshaking 12.8 Timeouts on an I/O Port 12.9 Interrupts and Polled I/O 12.10 Protected-Mode Operation and Device Drivers 12.11 For More Information 13 COMPUTER PERIPHERAL BUSES 13.1 The Small Computer System Interface 13.2 The IDE/ATA Interface 13.3 The Universal Serial Bus 13.4 For More Information 14 MASS STORAGE DEVICES AND FILESYSTEMS 14.1 Disk Drives 14.2 Tape Drives 14.3 Flash Storage 14.4 RAM Disks 14.5 Solid-State Drives 14.6 Hybrid Drives 14.7 Filesystems on Mass Storage Devices 14.8 Writing Software That Manipulates Data on a Mass Storage Device 14.9 For More Information 15 MISCELLANEOUS INPUT AND OUTPUT DEVICES 15.1 Exploring Specific PC Peripheral Devices 15.2 Mice, Trackpads, and Other Pointing Devices 15.3 Joysticks and Game Controllers 15.4 Sound Cards 15.5 For More Information AFTERWORD: THINKING LOW-LEVEL, WRITING HIGH-LEVEL A ASCII CHARACTER SET GLOSSARY INDEX
Similar books
The Book of I2C
2022 · AZW
The Art of ARM Assembly, Volume 1: 64-Bit ARM Machine Organization and Programming
2025 · EPUB
The Art of ARM Assembly, Volume 1: 64-Bit ARM Machine Organization and Programming
2025 · MOBI
The Art of ARM Assembly, Volume 1: 64-Bit ARM Machine Organization and Programming
2025 · PDF
The Art of ARM Assembly, Volume 1: 64-Bit ARM Machine Organization and Programming
2025 · EPUB
The Art of ARM Assembly, Volume 1 (for Candi Bara)
2024 · EPUB
Engineering Software
2020 · PDF
The Book of I²C: A Guide for Adventurers
2022 · EPUB