home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / tema / mysql / mysql-3.23.28g-win-source.exe / strings / macros.asm < prev    next >
Assembly Source File  |  2000-08-31  |  3KB  |  148 lines

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