导读

[源码] 汇编高压缩性能源码 GZIP / ZLIB / Deflate 编解码引擎源码分享

[复制链接]

微信扫一扫 分享朋友圈

MatthewAsync 发表于 6 小时前 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

马上注册,结交更多易友,享用更多功能,让你轻松玩转觅风论坛。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为了彻底摆脱第三方DLL依赖,我用汇编重写了整套Deflate编解码与校验核心。所有逻辑全部内嵌于 置入代码 机器码中,实现无依赖、高吞吐、原生的通用数据压缩与解压引擎。

模块亮点
  • 零外部依赖:完全脱离 zlib.dll、ntdll 等系统或外部动态链接库,杜绝环境缺失或DLL劫持风险。
  • 三合一格式全支持:

    • GZIP 格式(RFC 1952,自动处理 10 字节头、CRC32 校验与原始尺寸尾)。
    • ZLIB 格式(RFC 1950,自动处理 2 字节 CMF/FLG 头与 Adler-32 校验尾)。
    • Raw Deflate 裸数据流(RFC 1951)。

  • 全汇编算力核心:

    • 内置纯 ASM 实现的高速哈希表 LZ77 匹配与位流打包器。
    • 内置动态与固定 Huffman 树解码流水线,带完整前缀码表重构。
    • 内置纯汇编硬件级逻辑展开的 CRC32 与 Adler-32 校验算法,无需加载额外查表常数区。


【补丁更新】
修改模块:仅替换 Asm_计算CRC32 子程序。
优化原因:原CRC32为逐位移位实现,大文件耗时。
优化方案:改为动态栈查表 + 4字节并行循环展开。
实测效果:10MB GZIP 压缩耗时由 265ms 缩减至16ms左右,吞吐量达到625MB/s左右。其余解压与Deflate核心代码保持不变。


  1. .子程序 Asm_计算CRC32, 整数型, , 32位汇编 CRC32 校验计算核心。
  2. .参数 参_数据指针, 整数型, , 待计算数据内存首地址
  3. .参数 参_数据长度, 整数型, , 数据字节数

  4. 置入代码 ({ 83, 86, 87, 129, 236, 0, 4, 0, 0, 252, 139, 117, 8, 139, 77, 12, 49, 192, 133, 246, 15, 132, 128, 0, 0, 0, 133, 201, 116, 124, 49, 210, 137, 208, 187, 8, 0, 0, 0, 209, 232, 115, 5, 53, 32, 131, 184, 237, 75, 117, 244, 137, 4, 148, 66, 129, 250, 0, 1, 0, 0, 117, 225, 184, 255, 255, 255, 255, 137, 231, 131, 249, 4, 114, 58, 15, 182, 22, 48, 194, 193, 232, 8, 51, 4, 151, 15, 182, 86, 1, 48, 194, 193, 232, 8, 51, 4, 151, 15, 182, 86, 2, 48, 194, 193, 232, 8, 51, 4, 151, 15, 182, 86, 3, 48, 194, 193, 232, 8, 51, 4, 151, 131, 198, 4, 131, 233, 4, 131, 249, 4, 115, 198, 133, 201, 116, 15, 15, 182, 22, 48, 194, 193, 232, 8, 51, 4, 151, 70, 73, 117, 241, 247, 208, 129, 196, 0, 4, 0, 0, 95, 94, 91, 201, 194, 8, 0 })
  5. 返回 (0)
复制代码
360截图20260822073246555.jpg


游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

精彩评论1

scarknife 发表于 半小时前 | 显示全部楼层
看不懂,还是感谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们:觅风论坛与你快乐分享

收藏本站

用心服务做个非盈利公益编程网站

www.eyyba.com

服务人:觅风论坛

Email:eyyba@foxmail.com

Powered by WWW.EYYBA.COM X3.4© 2001-2023 Inc.   版权所有   

觅风论坛  疆ICP备15020893号-1