Description
Book SynopsisMany programmers have limited effectiveness because they don''t have a deep understanding of how their computer actually works under the hood. In Learn to Program with Assembly, you will learn to program in assembly language - the language of the computer itself.
Assembly language is often thought of as a difficult and arcane subject. However, author Jonathan Bartlett presents the material in a way that works just as well for first-time programmers as for long-time professionals. Whether this is your first programming book ever or you are a professional wanting to deepen your understanding of the computer you are working with, this book is for you. The book teaches 64-bit x86 assembly language running on the Linux operating system. However, even if you are not running Linux, a provided Docker image will allow you to use a Mac or Windows computer as well.
The book starts with extremely simple prog
Table of Contents
Chapter 1: IntroductionChapter 2: The Truth About ComputersPart I: Assembly Language BasicsChapter 3: Your First ProgramChapter 4: Registers and Simple ArithmeticChapter 5: Comparison, Branching and LoopingChapter 6: Working with Data in MemoryChapter 7: Data RecordsChapter 8: Signed Numbers and Bitwise OperationsChapter 9: More Instructions You Should KnowPart II: Operating System BasicsChapter 10: Making System CallsChapter 11: The Stack and Function CallsChapter 12: Calling Functions from LibrariesChapter 13: Common and Useful Assembler DirectivesChapter 14: Dynamic Memory AllocationChapter 15: Dynamic LinkingPart III: Programming Language TopicsChapter 16: Basic Language Features Represented in Assembly LanguageChapter 17: Tracking Memory AllocationsChapter 18: Object-Oriented ProgrammingChapter 19: Conclusion and AcknowlegmentsPart IV: AppendicesAppendix A: Getting Set Up with DockerAppendix B: The Command LineAppendix C: Debugging with GDBAppendix D: Nasm (Intel) Assembly Language SyntaxAppendix E: Common x86-64 InstructionsAppendix F: Floating Point NumbersAppendix G: The Starting State of the StackAppendix H: ASCII, Unicode, and UTF-8Appendix I: OptimizationAppendix J: A Simplified Garbage CollectorAppendix K: Going to an Even Lower Level