X-Git-Url: https://git.alrj.org/?p=bold.git;a=blobdiff_plain;f=data%2Fbold_ibh-x86_64.asm;h=42a25b49c27c54e951206aea7c2e46be59c1024a;hp=555555192544030d376e200bd14e5424549b9fec;hb=cfa01bd9bb99e5e7ded6db402951c081bdd21aa5;hpb=1fb0bfaaa17d5fd6b302091ca3a4b7350dae91e2 diff --git a/data/bold_ibh-x86_64.asm b/data/bold_ibh-x86_64.asm index 5555551..42a25b4 100644 --- a/data/bold_ibh-x86_64.asm +++ b/data/bold_ibh-x86_64.asm @@ -36,8 +36,8 @@ _bold__ibh: mov rbx, [rbx + 24] ; skip the first two link_map entries mov rbx, [rbx + 24] - mov esi, [rel _bold__functions_hash] ; Implicitly zero-extended - mov edi, [rel _bold__functions_pointers] ; ditto + mov esi, _bold__functions_hash ; Implicitly zero-extended + mov edi, _bold__functions_pointers ; ditto mov ecx, _bold__functions_count ; Load all the symbols @@ -87,18 +87,13 @@ _bold__ibh: ; Compute the hash xor edx, edx + xor eax, eax .hash_loop: ; over each char - xor eax, eax + imul edx, edx, byte 0x21 + xor edx, eax lodsb test al, al - jz .hash_end - - sub eax, edx - shl edx, 6 - add eax, edx - shl edx, 10 - add edx, eax - jmp short .hash_loop + jnz short .hash_loop .hash_end: cmp edx, r15d ; Compare with stored hash