title: Understanding gdb format
body: <p>I am trying to familiarize myself with <code>gdb</code> and had a few questions based upon its format and what it shows:</p>
  
  <pre><code>─── Assembly ────
   0x00000000004004ed  main+0  push   %rbp
   0x00000000004004ee  main+1  mov    %rsp,%rbp
  !0x00000000004004f1  main+4  movl   $0x539,-0x4(%rbp)
  </code></pre>
  
  <ul>
  <li>What does the memory address on the left column signify, and why is each instruction a variable-width "between" the next address?</li>
  <li>What does the second column mean?</li>
  </ul>
  
  <p>.</p>
  
  <pre><code>─── Registers ───────────────────────
  rax 0x00000000004004ed         
  rbx 0x0000000000000000      
  rcx 0x0000000000000000
  </code></pre>
  
  <ul>
  <li>Is the value next to the register its memory location, or the value contained in the registry?</li>
  </ul>
  
  <p>.</p>
  
  <pre><code>─── Stack ───────────────────
  [0] from 0x000000000040058c in main+47 at main.c:7
  </code></pre>
  
  <ul>
  <li>What is this line telling us: does the stack start at memory address <code>0x000000000040058c</code>, and what does the <code>main+47</code> refer to?</li>
  </ul>