Synopses & Reviews
Synopsis
Chapter 1 - A64.1: Memory, Registers, and Simple Arithmetic 11
Memory and Registers inside an Idealized Computer 11Memory and Registers inside ARM 64-bit Computer 12"Arithmetic" Project: Memory Layout and Registers 13"Arithmetic" Project: A Computer Program 14"Arithmetic" Project: Assigning Numbers to Memory Locations 15Assigning Numbers to Registers 18"Arithmetic" Project: Adding Numbers to Memory Cells 19Incrementing/Decrementing Numbers in Memory and Registers 22Multiplying Numbers 25
Chapter 2 - A64.2: Code Optimization 29"Arithmetic" Project: C/C++ Program 29Downloading GDB 31GDB Disassembly Output - No Optimization 32GDB Disassembly Output - Optimization 37
Chapter 3 - A64.3: Number Representations 39Numbers and Their Representations 39Decimal Representation (Base Ten) 40Ternary Representation (Base Three) 41Binary Representation (Base Two) 42Hexadecimal Representation (Base Sixteen) 43Why are Hexadecimals Used? 44
Chapter 4 - A64.4: Pointers 47A Definition 47"Pointers" Project: Memory Layout and Registers 48"Pointers" Project: Calculations 50Using Pointers to Assign Numbers to Memory Cells 51Adding Numbers Using Pointers 58Incrementing Numbers Using Pointers 62Multiplying Numbers Using Pointers 65
Chapter 5 - A64.5: Bytes, Half Words, Words, and Double Words 69Using Hexadecimal Numbers 69Byte Granularity 70Bit Granularity 71Memory Layout 72
Chapter 6 - A64.6: Pointers to Memory 75Pointers Revisited 75Addressing Types 76Registers Revisited 81NULL Pointers 82Invalid Pointers 83Variables as Pointers 84Pointer Initialization 85Initialized and Uninitialized Data 86More Pseudo Notation 87"MemoryPointers" Project: Memory Layout 88
Chapter 7 - A64.7: Logical Instructions and PC 99Instruction Format 99Logical Shift Instructions 100Logical Operations 101Zeroing Memory or Registers 102Instruction Pointer 103Code Section 105
Chapter 8 - A64.8: Reconstructing a Program with Pointers 107Example of Disassembly Output: No Optimization 107Reconstructing C/C++ Code: Part 1 110Reconstructing C/C++ Code: Part 2 112Reconstructing C/C++ Code: Part 3 114Reconstructing C/C++ Code: C/C++ program 116Example of Disassembly Output: Optimized Program 117
Chapter 9 - A64.9: Memory and Stacks 119Stack: A Definition 119Stack Implementation in Memory 120Things to Remember 122Stack Push Implementation 123Stack Pop Implementation 124Register Review 125Application Memory Simplified 126Stack Overflow 127Jumps 128Calls 130Call Stack 131Exploring Stack in GDB 133
Chapter 10 - A64.10: Frame Pointer and Local Variables 137Stack Usage 137Register Review 138Addressing Array Elements 139Stack Structure (No Function Parameters) 140Function Prolog 141Raw Stack (No Local Variables and Function Parameters) 142Function Epilog 144"Local Variables" Project 145Disassembly of Optimized Executable 148
Chapter 11- A64.11: Function Parameters 149"FunctionParameters" Project 149Stack Structure 150Function Prolo...