By Carl Burch, a professor for Hendrix College
in Conway, Arkansas, USA. To contact the author,
send e-mail to
.
[Other books
by Carl Burch]
Table of Contents
1. Introduction
1.1. Overview
1.2. About this book
2. C: Introduction
2.1. Basics
2.2. The printf() function
2.3. Boolean operators
2.4. Function prototypes
2.5. Header files
2.6. Constants
3. C: Pointers
3.1. The scanf() function
3.2. Arrays
3.3. Writing outside an array
3.4. Strings
3.5. Example: Tokenizing a string
4. C: Data structures
4.1. Dynamic memory
4.2. Example: Linked list
4.3. Analysis: Language and library levels
5. Data representation: Integers
5.1. Binary numbers
5.2. Integer representation
5.3. Bit operators
5.4. Counting one bits
6. Data representation: Floating point
6.1. Floating-point representation
6.2. IEEE standard
6.3. Analysis
7. Circuits: Basic logic
7.1. Boolean algebra
7.2. Algebraic laws
7.3. Converting a truth table
8. Circuits: Simplifying
8.1. Karnaugh maps
8.2. A more complex Karnaugh map
8.3. More logic gates and universality
9. Circuits: Components
9.1. Adding
9.2. Routing circuits
10. Circuits: Memory
10.1. Latches
10.2. Flip-flops
10.3. Registers
10.4. Memory
11. Assembly: Introduction
11.1. ISA varieties
11.2. A simple program
11.3. Another assembly example
11.4. Summary of instructions so far
11.5. Another assembly language example
12. Assembly: Memory
12.1. Basic memory instructions
12.2. Addressing modes
12.3. Initializing memory
12.4. Multiple-register memory instructions
13. Assembly: Subroutines
13.1. The link register
13.2. The program stack
13.3. Calling conventions
14. Caches
14.1. Memory hierarchy
14.2. Direct-mapped cache
14.3. Other cache types
14.4. Issues with writing
14.5. Performance issues
15. OS: Introduction
15.1. Exceptions
15.2. System calls
15.3. Handling files
15.4. Library functions
16. OS: Processes
16.1. Process table
16.2. Context switching
16.3. Preemption
16.4. Process scheduling
16.5. Managing processes under Linux
17. OS: Virtual memory
17.1. Basics
17.2. Replacement algorithms
17.3. Implementation issues
17.4. Analysis: Segments and virtual memory
18. Languages: Optimization
18.1. Register allocation
18.2. Peephole optimization
18.3. Removing jumps
18.4. Common subexpression elimination
18.5. Strength reduction
18.6. Loop unrolling
18.7. Function inlining
18.8. Tail recursion
18.9. Analysis
19. Languages: Garbage collection
20. Languages: OOPS
20.1. Basics
20.2. Polymorphism
20.3. Virtual methods
20.4. Optimizing
20.5. Casting
20.6. Interfaces
20.7. Analysis
