Here's a summary of the planned changes for each chapter.
- Introduction. Minor revisions. Move the discussion of Amdahl's Law to here, since it applies across many aspects of computer systems
- Data. Do some tuning to improve the presentation, without diminishing the core content. Present fixed word size data types.
- Machine code. A complete rewrite, using x86-64 as the machine language, rather than IA32. Also update examples based on more a recent version of GCC (4.8.1). Thankfully, GCC has introduced a new opimization level, specified with the command-line option `-Og' that provides a fairly direct mapping between the C and assembly code. We will provide a web aside describing IA32.
- Architecture. Shift from Y86 to y86-64. This includes having 15 registers (omitting %r15 simplifies instruction encoding.), and all data and addresses being 64 bits. Also update all of the code examples to following the x86-64 ABI conventions.
- Optimization. All examples will be updated (they're mostly x86-64 already).
- Memory Hierarchy. Updated to reflect more recent technology.
- Linking. Rewritten for x86-64. We've also expanded the discussion of using the GOT and PLT to create position-independent code, and added a new section on the very cool technique of library interpositioning.
- Exceptional Control Flow. More rigorous treatment of signal handlers, including async-signal-safe functions, specific guidelines for writing signal handlers, and using sigsuspend to wait for handlers.
- VM. Minor revisions.
- System-Level I/O. Added a new section on files and the file hierarchy.
- Network programming. Protocol-independent and thread-safe sockets programming using the modern getaddrinfo and getnameinfo functions, replacing the obsolete and non-reentrant gethostbyname and gethostbyaddr functions.
- Concurrent programming. Enhanced coverage of performance aspects of parallel multicore programs.