x86ASM

[转载]CRC32指令加速CRC32计算改良版
来在:http://www.x64asm.com/asmbbs/viewthread.php?tid=185
intel在sse4.2指令集中加入了crc32算法,只要一条指令就能代替crc32算法
指令简介:

指令格式:crc32    reg16/reg32/reg64/mem16/mem32/mem64,reg16/reg32/reg64

示例代码:
sse4_crc32 proc;buffer in rcx, size in rdx
    sub    rsp, 28h
    mov   rax,  0FFFFFFFFh    ; rax = -1
crc32_loop:
    mov   dl  , [ rcx ]
    crc32 rax, dl
    inc     rcx
    edc    rdx
    cmp   rdx, 0
    jne    crc32_loop
    add   rsp, 28h
    ret
sse4_crc32 endp

SSE4_CRC32 proc; buffer in rcx, size in rdx
    sub     rsp, 28h
    mov    rax, 0FFFFFFFFh;    rax = -1   
@R0:   
    cmp     rdx, 8
    jb        @R1
    mov     rbx, [ rcx ]
    crc32   rax, rbx
    add     rcx, 8
    sub     rdx, 8
    jmp     @R0
@R1:
    cmp     rdx, 4
    jb        @R2
    mov     ebx, [ rcx ]
    crc32   rax, ebx
    add     rcx, 4
    sub     rdx, 4
    jmp     @R1
@R2:
    cmp     rdx, 0
    je        @End
    mov     bl, [ rcx ]
    crc32   rax, bl
    inc       rcx
    dec      rdx
    jmp      @R2
@End:
    add     rsp, 28h
SSE4_CRC32 endp
倒序浏览 看全部 全部回复4
只可惜,Core 2系列最高端CPU都只支持到sse 4.1指令集。
  • 3楼 sWZ
  • 2012-1-10 05:21:21
嗯可惜大部分CPU都不支持。
最可怜的就要数ATOM系列了。即使是最新的型号也不支持SSE4.2
  • 4楼 upring
  • 2015-5-5 09:30:40
感谢分享{:soso_e198:}
我用 time33,来比比速度?
回复 收藏 转播 分享 淘帖