Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 6826 → Rev 6827

/kernel/trunk/crc.inc
0,0 → 1,40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2004-2017. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License. ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
; This crc32 routine doesn't use precomputed table to allow different
; polynomials, which is the first param.
; Partial hash in assumed to be eax (both in and out).
; Usage:
; 1. mov eax, -1
; 2. stdcall crypto.crc32 zero or more times
; 3. xor eax, -1
proc crc_32 _poly, _buffer, _length
push ebx ecx edx esi
 
mov esi, [_buffer]
.next_byte:
dec [_length]
js .done
movzx ebx, byte[esi]
inc esi
mov ecx, 8
.next_bit:
mov edx, eax
xor edx, ebx
shr eax, 1
test edx, 1
jz @f
xor eax, [_poly]
@@:
shr ebx, 1
dec ecx
jnz .next_bit
jmp .next_byte
.done:
pop esi edx ecx ebx
ret
endp
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property