macros.asm
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. ; Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB ;  ; This library is free software; you can redistribute it and/or ; modify it under the terms of the GNU Library General Public ; License as published by the Free Software Foundation; either ; version 2 of the License, or (at your option) any later version. ;  ; This library is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU ; Library General Public License for more details. ;  ; You should have received a copy of the GNU Library General Public ; License along with this library; if not, write to the Free ; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA ; Some useful macros
  2. .386P
  3. .387
  4. _FLAT equ 0 ;FLAT memory model
  5. _STDCALL equ 0 ;default to _stdcall
  6. I386 equ 1
  7. begcode macro module
  8.     if _FLAT
  9. _TEXT segment dword use32 public 'CODE'
  10.   assume CS:FLAT,DS:FLAT,SS:FLAT
  11.     else
  12. _TEXT segment dword public 'CODE'
  13.   assume CS:_TEXT
  14.     endif
  15. endm
  16. endcode macro module
  17. _TEXT ENDS
  18. endm
  19. begdata macro
  20. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  21. ; Set up segments for data
  22. ; Regular initialized data goes in _DATA
  23. _DATA segment dword public 'DATA'
  24. _DATA ends
  25. ;Function pointers to constructors
  26. XIB segment dword public 'DATA'
  27. XIB ends
  28. XI segment dword public 'DATA'
  29. XI ends
  30. XIE segment dword public 'DATA'
  31. XIE ends
  32. ;Function pointers to destructors
  33. XCB segment dword public 'DATA'
  34. XCB ends
  35. XC segment dword public 'DATA'
  36. XC ends
  37. XCE segment dword public 'DATA'
  38. XCE ends
  39. ;Constant data, such as switch tables, go here.
  40. CONST segment dword public 'CONST'
  41. CONST ends
  42. ;Segment for uninitialized data. This is set to 0 by the startup code/OS,
  43. ;so it does not consume room in the executable file.
  44. _BSS segment dword public 'BSS'
  45. _BSS ends
  46. HUGE_BSS segment dword public 'HUGE_BSS'
  47. HUGE_BSS ends
  48. EEND segment dword public 'ENDBSS'
  49. EEND ends
  50. STACK segment para stack 'STACK'
  51. STACK ends
  52. DGROUP group _DATA,XIB,XI,XIE,XCB,XC,XCE,CONST,_BSS,EEND,STACK
  53. _DATA segment
  54. if _FLAT
  55.   assume DS:FLAT
  56. else
  57.   assume DS:DGROUP
  58. endif
  59. endm
  60. enddata macro
  61. _DATA ends
  62. endm
  63. P equ 8 ; Offset of start of parameters on the stack frame
  64. ; From EBP assuming EBP was pushed.
  65. PS equ 4 ; Offset of start of parameters on the stack frame
  66. ; From ESP assuming EBP was NOT pushed.
  67. ESeqDS equ 0
  68. FSeqDS equ 0
  69. GSeqDS equ 0
  70. SSeqDS equ 1
  71. SIZEPTR equ 4 ; Size of a pointer
  72. LPTR equ 0
  73. SPTR equ 1
  74. LCODE equ 0
  75. func macro name
  76. _&name proc near
  77.     ifndef name
  78. name equ _&name
  79.     endif
  80. endm
  81. callm macro name
  82. call _&name
  83. endm
  84. ;Macros to replace public, extrn, and endp for C-callable assembly routines,
  85. ; and to define labels: c_label defines labels,
  86. ; c_public replaces public, c_extrn replaces extrn, and c_endp replaces endp
  87. c_name macro name
  88. name equ _&name
  89. endm
  90. c_label macro name
  91. _&name:
  92. endm
  93. c_endp macro name
  94. _&name ENDP
  95. endm
  96. clr macro list ;clear a register
  97. irp reg,<list>
  98.  xor reg,reg
  99. endm
  100. endm
  101. jmps macro lbl
  102. jmp short lbl
  103. endm