title: How does the CPU know how many bytes it should read for the next instruction, considering instructions have different lenghts?
body: <p>So i was reading a paper, and in it, they said that statically disassembling the code of a binary is undecidable, because a series of bytes could be represented as many possible ways as shown in picture ( its x86 )</p>
  
  <p><a href="https://i.stack.imgur.com/wgfw5.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/wgfw5.jpg" alt="disassembling"></a></p>
  
  <p>so my question is :</p>
  
  <ol>
  <li><p>how does the CPU execute this then? for example in the picture, when we reach after C3, how does it know how many bytes it should  read for the next instruction?</p></li>
  <li><p>how does the CPU know how much it should increment the PC after executing one instruction? does it somehow store the size of the current instruction and add that when it wants to increment PC? </p></li>
  <li><p>if the CPU can somehow know how many bytes it should read for the next instruction or basically how to interpret the next instruction, why cant we do it statically? </p></li>
  </ol>