home *** CD-ROM | disk | FTP | other *** search
/ Cutting-Edge 3D Game Programming with C++ / CE3DC++.ISO / BOOK / CHAP12 / FIXASM.HPP < prev    next >
C/C++ Source or Header  |  1996-06-01  |  604b  |  28 lines

  1. //
  2. // File name: FixASM.HPP
  3. //
  4. // Description: Several fixed-point assembly macros.
  5. //
  6. // Target: 32-bit
  7. //
  8. // Project: Cutting Edge 3-D Game Programming
  9. //
  10.  
  11. #ifndef FIXASMHPP
  12. #define FIXASMHPP
  13.  
  14. #define fixmul( Result, Fac1, Fac2, Prec )\
  15.   { asm { mov  eax, Fac1 }\
  16.     asm { imul Fac2 }\
  17.     asm { shrd eax, edx, 32-Prec }\
  18.     asm { mov  Result, eax } }
  19.  
  20. #define fixdiv( Result, Num, Denom, Prec )\
  21.   { asm { mov  eax, Num }\
  22.     asm { mov  edx, eax }\
  23.     asm { sar  edx, Prec }\
  24.     asm { shl  eax, 32-Prec }\
  25.     asm { idiv Denom }\
  26.     asm { mov  Result, eax } }
  27.  
  28. #endif