~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to strings/macros.asm

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

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