title: Invalid float point operation on Move?
body: <p>I´m experiencing an weird issue that I have never seen before, in Delphi 2010 sometimes when using the routine CopyMemory (Which internally calls Move) I get an Invalid Float Point Operation exception, when such thing could happen when using Move??</p>
  
  <p>I have a debug information in assembler, I have checked the source code of Move and the problem happens in FILD instruction, I found that FILD converts an integer value from memory to float point in a register and it could trigger that invalid operation, but why that happens? I´m stuck with this for 2 days now</p>
  
  <pre><code>Assembler Information:
  ; System.Move (Line=0 - Offset=1)
  ;
  00404E0C cmp eax, edx
  00404E0E jz System.Move
  00404E10 cmp ecx, +$20
  00404E13 jnbe System.Move
  00404E15 sub ecx, +$08
  00404E18 jnle System.Move
  00404E1A jmp dword ptr [System.Move+ecx*4]
  00404E21 fild qword ptr [ecx+eax]
  00404E24 fild qword ptr [eax] ; &lt;-- EXCEPTION
  00404E26 cmp ecx, +$08
  00404E29 jle System.Move
  00404E2B fild qword ptr [eax+$08]
  00404E2E cmp ecx, +$10
  00404E31 jle System.Move
  00404E33 fild qword ptr [eax+$10]
  00404E36 fistp qword ptr [edx+$10]
  00404E39 fistp qword ptr [edx+$08]
  00404E3C fistp qword ptr [edx]
  00404E3E fistp qword ptr [ecx+edx]
  
  Registers:
  EAX: 0E3A4694 EDI: 0000000D
  EBX: 00001B5C ESI: 0ECF7928
  ECX: 00000005 ESP: 0612FC1C
  EDX: 0E3A2B38 EIP: 00404E24
  </code></pre>
  
  <p>What could cause that error?</p>