Delphi:高效的哈希函数程序
view plaincopy to clipboardprint?
01.function BKDRHash(buf: Pointer; count: Integer) : Cardinal; assembler;
02.asm
03. PUSHEBX;
04. XOR EBX, EBX
05. MOV ECX, EAX
06. XOR EAX, EAX
07.@LOOP:
08. TESTEDX, EDX
09. JZ @EXIT
10. MOV BL,[ECX]
11. IMULEAX, 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. PUSHEDI
32. PUSHEBX
33. XOR EBX, EBX
34. MOV ECX, EAX
35. MOV EAX, 5381
36.@LOOP:
37. TESTEDX, 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
PUSHEBX;
XOR EBX, EBX
MOV ECX, EAX
XOR EAX, EAX
@LOOP:
TESTEDX, EDX
JZ @EXIT
MOV BL,[ECX]
IMULEAX, 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
PUSHEDI
PUSHEBX
XOR EBX, EBX
MOV ECX, EAX
MOV EAX, 5381
@LOOP:
TESTEDX, 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;
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- Linux内核解读入门(11-09)
- Linux操作系统网络驱动程序编写(04-11)
- Linux系统对ISA总线DMA的实现(06-19)
- 基于MPEG-4的嵌入式多媒体监控系统中压缩/解压卡的设计与实现(10-15)
- Windows CE下驱动程序开发基础(04-10)