找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 10992|回复: 4

[转载]CRC32指令加速CRC32计算改良版

  [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-2-9 20:57:08 | 显示全部楼层 |阅读模式
来在: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

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-2-9 20:57:47 | 显示全部楼层
只可惜,Core 2系列最高端CPU都只支持到sse 4.1指令集。

0

主题

11

回帖

0

精华

初来乍到

积分
23
发表于 2012-1-10 05:21:21 | 显示全部楼层
嗯可惜大部分CPU都不支持。
最可怜的就要数ATOM系列了。即使是最新的型号也不支持SSE4.2

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-5-5 09:30:40 | 显示全部楼层
感谢分享{:soso_e198:}

3

主题

10

回帖

0

精华

初来乍到

积分
16
发表于 2021-1-22 13:58:35 | 显示全部楼层
我用 time33,来比比速度?
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表