Rev 2839 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2839 | Rev 2874 | ||
---|---|---|---|
Line 96... | Line 96... | ||
96 | rep movsb |
96 | rep movsb |
97 | cld |
97 | cld |
98 | l2: |
98 | l2: |
99 | } |
99 | } |
100 | } |
100 | } |
- | 101 | ||
- | 102 | ||
- | 103 | /*:void fastcall memsetz( EDI, ECX) |
|
- | 104 | { |
|
- | 105 | asm { |
|
- | 106 | XOR EAX, EAX |
|
- | 107 | MOV EDX, ECX |
|
- | 108 | SHR ECX, 2 |
|
- | 109 | REP STOSD |
|
- | 110 | MOV ECX, EDX |
|
- | 111 | AND ECX, 3 |
|
- | 112 | REP STOSB |
|
- | 113 | } |
|
- | 114 | } |
|
- | 115 | ||
- | 116 | :void fastcall memset( EDI, ECX, AL) |
|
- | 117 | { |
|
- | 118 | asm { |
|
- | 119 | MOV AH, AL |
|
- | 120 | MOVZX EDX, AX |
|
- | 121 | SHL EAX, 16 |
|
- | 122 | OR EAX, EDX |
|
- | 123 | MOV EDX, ECX |
|
- | 124 | SHR ECX, 2 |
|
- | 125 | REP STOSD |
|
- | 126 | MOV ECX, EDX |
|
- | 127 | AND ECX, 3 |
|
- | 128 | REP STOSB |
|
- | 129 | } |
|
- | 130 | } |
|
- | 131 | ||
- | 132 | :void fastcall memcpy( EDI, ESI, ECX) |
|
- | 133 | { |
|
- | 134 | asm { |
|
- | 135 | MOV EDX, ECX |
|
- | 136 | SHR ECX, 2 |
|
- | 137 | REP MOVSD |
|
- | 138 | MOV ECX, EDX |
|
- | 139 | AND ECX, 3 |
|
- | 140 | REP MOVSB |
|
- | 141 | } |
|
- | 142 | } |
|
- | 143 | ||
- | 144 | :void fastcall memsetd( EDI, ECX, EAX) |
|
- | 145 | { |
|
- | 146 | asm { |
|
- | 147 | REP STOSD |
|
- | 148 | } |
|
- | 149 | } |
|
- | 150 | ||
- | 151 | :void fastcall memcpyd( EDI, ESI, ECX) |
|
- | 152 | { |
|
- | 153 | asm { |
|
- | 154 | REP MOVSD |
|
- | 155 | } |
|
- | 156 | } |
|
- | 157 | ||
- | 158 | :void fastcall memmov( EDI, ESI, ECX) |
|
- | 159 | { |
|
- | 160 | asm { |
|
- | 161 | MOV EAX, ECX |
|
- | 162 | CMP EDI, ESI |
|
- | 163 | JG L1 |
|
- | 164 | JE L2 |
|
- | 165 | SAR ECX, 2 |
|
- | 166 | JS L2 |
|
- | 167 | REP MOVSD |
|
- | 168 | MOV ECX, EAX |
|
- | 169 | AND ECX, 3 |
|
- | 170 | REP MOVSB |
|
- | 171 | JMP SHORT L2 |
|
- | 172 | L1: LEA ESI, DSDWORD[ ESI+ECX-4] |
|
- | 173 | LEA EDI, DSDWORD[ EDI+ECX-4] |
|
- | 174 | SAR ECX, 2 |
|
- | 175 | JS L2 |
|
- | 176 | STD |
|
- | 177 | REP MOVSD |
|
- | 178 | MOV ECX, EAX |
|
- | 179 | AND ECX, 3 |
|
- | 180 | ADD ESI, 3 |
|
- | 181 | ADD EDI, 3 |
|
- | 182 | REP MOVSB |
|
- | 183 | CLD |
|
- | 184 | L2: |
|
- | 185 | } |
|
- | 186 | } |
|
- | 187 | ||
- | 188 | :long fastcall memcmp( ESI, EDI, ECX) |
|
- | 189 | { |
|
- | 190 | asm { |
|
- | 191 | MOV EAX, ECX |
|
- | 192 | SHR ECX, 2 |
|
- | 193 | REPE CMPSD |
|
- | 194 | MOV ECX, EAX |
|
- | 195 | AND ECX, 3 |
|
- | 196 | REPE CMPSB |
|
- | 197 | XOR EAX, EAX |
|
- | 198 | XOR ECX, ECX |
|
- | 199 | MOV AL, DSBYTE[ ESI-1] |
|
- | 200 | MOV CL, DSBYTE[ EDI-1] |
|
- | 201 | SUB EAX, ECX |
|
- | 202 | } |
|
- | 203 | }*/ |
|
- | 204 | ||
- | 205 | ||
- | 206 | /*#define memzset memsetz |
|
- | 207 | #define memset0 memsetz |
|
- | 208 | #define mem0set memsetz |
|
- | 209 | #define memset32 memsetd |
|
- | 210 | #define memcpy32 memcpyd*/ |