tbs0313.pp 510 B

123456789101112131415161718192021222324
  1. {$asmmode intel}
  2. TYPE
  3. TPoint3 = RECORD
  4. x,y,z:Single;
  5. END;
  6. OPERATOR + (CONST p1,p2:TPoint3) p : TPoint3; Assembler;
  7. ASM
  8. mov EBX,[p1]
  9. mov EDI,[p2]
  10. mov EDX,[p]
  11. movq MM0,[EBX]
  12. pfadd MM0,[EDI]
  13. movq [EDX],MM0
  14. { Now the correct way would be something like: }
  15. movd MM0,[EBX+8] // [movd reg??,mem?? - invalid combination of opcod
  16. movd MM1,[EDI+8] // and here, too
  17. pfadd MM0,MM1
  18. movd [EDX+8],MM0 // and here
  19. femms
  20. END;
  21. begin
  22. end.