MatthewAsync 发表于 2026-8-22 07:33:19

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

为了彻底摆脱第三方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核心代码保持不变。


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

置入代码 ({ 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 })
返回 (0)


**** Hidden Message *****

scarknife 发表于 2026-8-22 13:50:32

看不懂,还是感谢楼主分享

WSW120 发表于 2026-8-22 18:17:14

谢谢谢谢谢谢

lryns 发表于 2026-8-23 03:31:53

不错不错不错不错不错不错不错不错不错不错

天空欣欣天下 发表于 2026-8-24 04:30:11

谢谢楼主的辛苦分享
页: [1]
查看完整版本: 汇编高压缩性能源码 GZIP / ZLIB / Deflate 编解码引擎源码分享