title: what does eax have after mov eax,dword ptr [edi]
body: <p>I have the following assembly code on Windows and I want to make sure that I understand correctly.
  <code>edi</code> contains some address i.e. <code>0x6090F454</code></p>
  
  <p>In this case, what should <code>eax</code> have after the first <code>mov</code> instruction?</p>
  
  <pre><code>775672f3  mov eax,dword ptr [edi]
  
  775672f5  mov dword ptr [ebp-50h],0 
  775672fc  mov dword ptr [ebp-48h],0 
  
  77567303  cmp eax,0FFFFFFFFh 
  </code></pre>
  
  <p>It seems to me that <code>eax</code> must have the value but I am not so sure about that.
  For your information, C++ code for the above assembly is</p>
  
  <pre><code>if (sem-&gt;num != INVALID_FLAG) {
      ....
  }
  </code></pre>
  
  <p>Also, here is what's store in edi.</p>
  
  <pre><code>0:024&gt; dd edi
  6090f454  0c0e8fe0 ffffffff 00000000 00000000
  </code></pre>
  
  <p>Thank you in advance.</p>