title: Why would the IRET instruction increment EIP by 4?
body: <p>From the Intel 80386 Programmer's Reference Manual:</p>
  <pre><code>IRET is similar to RET except that IRET increments EIP
  by an extra four bytes (because of the flags on the stack) and moves the
  saved flags into the EFLAGS register.
  </code></pre>
  <p>I don't exactly get why IRET increments EIP. What I know is that before jumping to an ISR, EFLAGS is pushed (among other things); and it's popped off of the stack when an ISR finishes (and IRET is called). How is this relevant to EIP at all?</p>