asmrules.h
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:2k
源码类别:

DVD

开发平台:

Others

  1. /*
  2.  *      Paradigm C/C++ Run-Time Library - Version 5.0
  3.  *
  4.  *      Copyright (c) 1998 Paradigm Systems.  All rights reserved.
  5.  *      Portions Copyright (c) 1996 Borland International.
  6.  *
  7.  *      $Revision: 2 $
  8.  *
  9.  *      Rules & structures useful for in-line assembler
  10.  */
  11. #include "Config.h" // Global Configuration - do not remove!
  12. #pragma inline
  13. #pragma warn -asm
  14. /****
  15. #define  LPROG  (4 == sizeof (void (*) (void)))
  16. #define  LDATA  (4 == sizeof (void *))
  17. ****/
  18. #if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)
  19. #define LDATA 1
  20. #else
  21. #define LDATA 0
  22. #endif
  23. #if defined(__LARGE__) || defined(__HUGE__) || defined(__MEDIUM__)
  24. #define LPROG 1
  25. #else
  26. #define LPROG 0
  27. #endif
  28. #define  W0(ea) (word ptr (ea))
  29. #define  W1(ea) (word ptr (ea) [2])
  30. #define  BY0(ea) (byte ptr (ea))
  31. #define  BY1(ea) (byte ptr (ea) [1])
  32. #define  FLOAT(ea)  (dword ptr (ea))
  33. #define  DOUBLE(ea) (qword ptr (ea))
  34. #define  LONGDOUBLE(ea) (tbyte ptr (ea))
  35. #define _SimLocalCall_  asm     db      0E8h, 0, 0      /* call $       */
  36. /*      jmp     toLocalProc                             NEVER USE "SHORT" ! */
  37. #define  RETNEAR asm  db   0C3h
  38. #if LDATA
  39. #   define  LES_  LES
  40. #   define  ES_   ES:
  41. #   define  SS_   SS:
  42. #   define  DPTR_(ea)  (dword ptr (ea))
  43. #   define  dPtrSize    4
  44. #   define  pushDS_     asm     push    DS
  45. #   define  LDS_        LDS
  46. #   define  popDS_      asm     pop     DS
  47. #else
  48. #   define  LES_  mov
  49. #   define  ES_
  50. #   define  SS_
  51. #   define  DPTR_(ea)  (word ptr (ea))
  52. #   define  dPtrSize    2
  53. #   define  pushDS_
  54. #   define  LDS_        mov
  55. #   define  popDS_
  56. #endif
  57. #if LPROG
  58. #   define  CPTR_(ea)  (dword ptr (ea))
  59. #   define  EXTPROC(x)  (far ptr (x))
  60. #   define  cPtrSize    4
  61. #else
  62. #   define  CPTR_(ea)  (word ptr (ea))
  63. #   define  EXTPROC(x)  (x)
  64. #   define  cPtrSize    2
  65. #endif
  66. /* Use these macros inside of a function to force an si or di save/restore */
  67. #define SaveSI                  asm     __savesi equ si
  68. #define SaveDI                  asm     __savedi equ di
  69. /* Use this macro inside of a _loadds function to force a DS save/restore */
  70. #define HugeDS asm __saveds equ ds
  71. /* Use these macros when you want to return a value in DX:AX and
  72.    avoid a warning messages being generated.  Ex: return( MK_LONG ); */
  73. #define MK_LONG   (long)((void _seg *)(_DX) + (void near *)(_AX))
  74. #define MK_ULONG  (unsigned long)((void _seg *)(_DX) + (void near *)(_AX))