Subversion Repositories Kolibri OS

Rev

Rev 3128 | Rev 5606 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3128 Rev 5598
Line -... Line 1...
-
 
1
#ifndef INCLUDE_MEM_H
-
 
2
#define INCLUDE_MEM_H
Line 1... Line 3...
1
dword mem_init()
3
 
2
{
4
dword mem_init()
3
        $push    ebx
5
{
4
        $mov     eax, 68
6
	$push    ebx
Line 94... Line 96...
94
#define mem_ReAlloc realloc
96
#define mem_Alloc malloc
95
#define mem_Free free
97
#define mem_ReAlloc realloc
96
#define mem_Init mem_init
98
#define mem_Free free
97
 
99
#define mem_Init mem_init
Line 98... Line -...
98
/*:void fastcall memsetz( EDI, ECX)
-
 
99
{
-
 
100
  asm {
-
 
101
    XOR EAX, EAX
-
 
102
    MOV EDX, ECX
-
 
103
    SHR ECX, 2
-
 
104
    REP STOSD
-
 
105
    MOV ECX, EDX
-
 
106
    AND ECX, 3
-
 
107
    REP STOSB
-
 
108
  }
-
 
109
}
-
 
110
 
-
 
111
:void fastcall memset( EDI, ECX, AL) //copy AL to EDI of ECX num (void *dest, size_t, char c )
-
 
112
{
-
 
113
  asm {
-
 
114
    MOV AH, AL
-
 
115
    MOVZX EDX, AX
-
 
116
    SHL EAX, 16
-
 
117
    OR EAX, EDX
-
 
118
    MOV EDX, ECX
-
 
119
    SHR ECX, 2
-
 
120
    REP STOSD
-
 
121
    MOV ECX, EDX
-
 
122
    AND ECX, 3
-
 
123
    REP STOSB
-
 
124
  }
-
 
125
}
-
 
126
 
-
 
127
:void fastcall memsetd( EDI, ECX, EAX)
-
 
128
{
-
 
129
  asm {
-
 
130
    REP STOSD
-
 
131
  }
-
 
132
}
-
 
133
 
-
 
134
:void fastcall memcpyd( EDI, ESI, ECX)
-
 
135
{
-
 
136
  asm {
-
 
137
    REP MOVSD
-
 
138
  }
-
 
139
}
-
 
140
 
-
 
141
:void fastcall memmov( EDI, ESI, ECX)
-
 
142
{
-
 
143
  asm {
-
 
144
    MOV EAX, ECX
-
 
145
    CMP EDI, ESI
-
 
146
    JG L1
-
 
147
    JE L2
-
 
148
    SAR ECX, 2
-
 
149
    JS L2
-
 
150
    REP MOVSD
-
 
151
    MOV ECX, EAX
-
 
152
    AND ECX, 3
-
 
153
    REP MOVSB
-
 
154
    JMP SHORT L2
-
 
155
L1: LEA ESI, DSDWORD[ ESI+ECX-4]
-
 
156
    LEA EDI, DSDWORD[ EDI+ECX-4]
-
 
157
    SAR ECX, 2
-
 
158
    JS L2
-
 
159
    STD
-
 
160
    REP MOVSD
-
 
161
    MOV ECX, EAX
-
 
162
    AND ECX, 3
-
 
163
    ADD ESI, 3
-
 
164
    ADD EDI, 3
-
 
165
    REP MOVSB
-
 
166
    CLD
-
 
167
L2:
-
 
168
  }
-
 
169
}
-
 
170
 
-
 
171
:long fastcall memcmp( ESI, EDI, ECX)
-
 
172
{
-
 
173
  asm {
100
 
174
    MOV EAX, ECX
-
 
175
    SHR ECX, 2
-
 
176
    REPE CMPSD
-
 
177
    MOV ECX, EAX
-
 
178
    AND ECX, 3
-
 
179
    REPE CMPSB
-
 
180
    XOR EAX, EAX
-
 
181
    XOR ECX, ECX
-
 
182
    MOV AL, DSBYTE[ ESI-1]
-
 
183
    MOV CL, DSBYTE[ EDI-1]
-
 
184
    SUB EAX, ECX
-
 
185
  }
-
 
186
}*/
-
 
187
 
-
 
188
 
-
 
189
/*#define memzset memsetz
-
 
190
#define memset0 memsetz
-
 
191
#define mem0set memsetz
-
 
192
#define memset32 memsetd
-
 
193
#define memcpy32 memcpyd*/
-
 
194
101
#endif