您现在的位置: 主页 > MCU > 单片机技术应用 > Delphi:高效的哈希函数程序 -
本文所属标签:
为本文创立个标签吧:

Delphi:高效的哈希函数程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]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.

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; 

本文引用地址: http://www.21ic.com/app/mcu/201209/143215.htm



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > Delphi:高效的哈希函数程序 -
 

"Delphi:高效的哈希函数程序 -"的相关文章

网站地图

围观()