Low Level Programming : C Assembly and Program Execution on Intel® 64 Architecture Learn Intel 64 assembly language and architecture become proficient in C and understand how the programs are compiled and executed down to machine instructions enabling you to write robust high performance code. Low Level Programming explains Intel 64 architecture as the result of von Neumann architecture evolution. The book teaches the latest version of the C language (C11) and assembly language from scratch. It covers the entire path from source code to program execution including generation of ELF object files and static and dynamic linking. Code examples and exercises are included along with the best code practices. Optimization capabilities and limits of modern compilers are examined enabling you to balance between program readability and performance. The use of various performance gain techniques is demonstrated such as SSE instructions and pre fetching. Relevant Computer Science topics such as models of computation and formal grammars are addressed and their practical value explained. Low Level Programming teaches programmers to: Freely write in assembly language Understand the programming model of Intel 64 Write maintainable and robust code in C11 Follow the compilation process and decipher assembly listings Debug errors in compiled assembly code Use appropriate models of computation to greatly reduce program complexity Write performance critical code Comprehend the impact of a weak memory model in multi threaded applications Part I: Assembly Language and Computer Architecture Chapter 1: Basic Computer Architecture Chapter 2: Assembly Language Chapter 3: Legacy Chapter 4: Virtual Memory Chapter 5: Compilation Pipeline Chapter 6: Interrupts and System Calls Chapter 7: Models of Computation Part II: The C Programming Language Chapter 8: Basics Chapter 9: Type System Chapter 10: Code Structure Chapter 11: Memory Chapter 12: Syntax Semantics and Pragmatics Chapter 13: Good Code Practices Part III: Between C and Assembly Chapter 14: Translation Details Chapter 15: Shared Objects Chapter 16: Performance Chapter 17: Multithreading Part IV: Appendices Chapter 18: Appendix A: Using gdb Chapter 19: Appendix B: Using Make Chapter 20: Appendix C: System Calls Chapter 21: Appendix D: Performance Tests Chapter 22: Bibliography