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 |