title: How does the program counter know where the next instruction is in memory?
body: <p>I've always been told that it increments by 4 to fetch the next instruction (when there are no jumps or such things), but does this mean that instructions are limited to having 3 arguments?</p>
  
  <p>Am I right in thinking the program looks like this in memory:</p>
  
  <pre><code>0: LOAD
  1: eax
  2: 0x30
  3: &lt;zeroed out because the next instruction has to be at 4&gt;
  4: LOAD
  5: ebx
  6: 0x34
  7: &lt;zeroed out because the next instruction has to be at 8&gt;
  8: ADD
  9: ecx
  10: eax
  11: ebx
  12: &lt;Next instruction&gt;
  </code></pre>
  
  <p>Etc.</p>
  
  <p>This may not be exactly valid assembly but you get my point (I also know it would be in binary). If the program is not loaded like this in memory, then how does the program counter know where the next instruction is?</p>