|
view plaincopy to clipboardprint?
01.function BKDRHash(buf: Pointer; count: Integer) : Cardinal; assembler;? ?
02.asm??
03.? ?? ???PUSH??EBX;? ?
04.? ?? ???XOR? ?EBX, EBX? ?
05.? ?? ???MOV? ?ECX, EAX? ?
06.? ?? ???XOR? ?EAX, EAX? ?
07.@LOOP:? ?
08.? ?? ???TEST??EDX, EDX? ?
09.? ?? ???JZ? ? @EXIT? ?
10.? ?? ???MOV? ?BL,??[ECX]? ?
11.? ?? ???IMUL??EAX, 131??
12.? ?? ???ADD? ?EAX, EBX? ?
13.? ?? ???INC? ?ECX? ?
14.? ?? ???DEC? ?EDX? ?
15.? ?? ???JMP? ?@LOOP? ?
16.@EXIT:? ?
17.? ?? ???POP? ?EBX? ?
18.//----------------------------? ?
19.// Pascal:? ?
20.//? ?
21.//??Result := 0;? ?
22.//??while count > 0 do? ?
23.//??begin? ?
24.//? ? Result := (Result * 131) + PByte(buf)^;? ?
25.//? ? Inc(PByte(buf));? ?
26.//? ? Dec(count);? ?
27.//??end;? ?
28.end;? ?
29.function DJBHash(buf: Pointer; count: Integer) : Cardinal; assembler;? ?
30.asm??
31.? ?? ???PUSH??EDI? ?
32.? ?? ???PUSH??EBX? ?
33.? ?? ???XOR? ?EBX, EBX? ?
34.? ?? ???MOV? ?ECX, EAX? ?
35.? ?? ???MOV? ?EAX, 5381??
36.@LOOP:? ?
37.? ?? ???TEST??EDX, EDX? ?
38.? ?? ???JZ? ? @EXIT? ?
39.? ?? ???MOV? ?EDI, EAX? ?
40.? ?? ???SHL? ?EDI, 5??
41.? ?? ???ADD? ?EAX, EDI? ?
42.? ?? ???MOV? ?BL, [ECX]? ?
43.? ?? ???ADD? ?EAX, EBX? ?
44.? ?? ???INC? ?ECX? ?
45.? ?? ???DEC? ?EDX? ?
46.? ?? ???JMP? ?@LOOP? ?
47.@EXIT:? ?
48.? ?? ???POP? ?EBX? ?
49.? ?? ???POP? ?EDI? ?
50.//----------------------------? ?
51.// Pascal:? ?
52.//? ?
53.//??Result := 5381;? ?
54.//??while count > 0 do? ?
55.//??begin? ?
56.//? ? Result := ((Result shl 5) + Result) + PByte(buf)^;? ?
57.//? ? Inc(PByte(buf));? ?
58.//? ? Dec(count);? ?
59.//??end;? ?
60.end;??
function BKDRHash(buf: Pointer; count: Integer) : Cardinal; assembler;
asm
? ?? ???PUSH??EBX;
? ?? ???XOR? ?EBX, EBX
? ?? ???MOV? ?ECX, EAX
? ?? ???XOR? ?EAX, EAX
@LOOP:
? ?? ???TEST??EDX, EDX
? ?? ???JZ? ? @EXIT
? ?? ???MOV? ?BL,??[ECX]
? ?? ???IMUL??EAX, 131
? ?? ???ADD? ?EAX, EBX
? ?? ???INC? ?ECX
? ?? ???DEC? ?EDX
? ?? ???JMP? ?@LOOP
@EXIT:
? ?? ???POP? ?EBX
//----------------------------
// Pascal:
//
//??Result := 0;
//??while count > 0 do
//??begin
//? ? Result := (Result * 131) + PByte(buf)^;
//? ? Inc(PByte(buf));
//? ? Dec(count);
//??end;
end;
function DJBHash(buf: Pointer; count: Integer) : Cardinal; assembler;
asm
? ?? ???PUSH??EDI
? ?? ???PUSH??EBX
? ?? ???XOR? ?EBX, EBX
? ?? ???MOV? ?ECX, EAX
? ?? ???MOV? ?EAX, 5381
@LOOP:
? ?? ???TEST??EDX, EDX
? ?? ???JZ? ? @EXIT
? ?? ???MOV? ?EDI, EAX
? ?? ???SHL? ?EDI, 5
? ?? ???ADD? ?EAX, EDI
? ?? ???MOV? ?BL, [ECX]
? ?? ???ADD? ?EAX, EBX
? ?? ???INC? ?ECX
? ?? ???DEC? ?EDX
? ?? ???JMP? ?@LOOP
@EXIT:
? ?? ???POP? ?EBX
? ?? ???POP? ?EDI
//----------------------------
// Pascal:
//
//??Result := 5381;
//??while count > 0 do
//??begin
//? ? Result := ((Result shl 5) + Result) + PByte(buf)^;
//? ? Inc(PByte(buf));
//? ? Dec(count);
//??end;
end;?
|
|