FFmpeg把自己写的之前呼声很高的汇编课程发布到Github上了。(之前是在g

又仁看科技 2025-01-26 13:16:11

FFmpeg把自己写的之前呼声很高的汇编课程发布到Github上了。(之前是在google docs上写的草稿)

github.com/FFmpeg/asm-lessons

第一课:

奠定SIMD汇编基础,解析手写汇编在FFmpeg中的必要性(10倍以上性能优势),介绍x86 Intel语法、通用寄存器(GPR)与向量寄存器(XMM/YMM)的区别,以及通过x86inc.asm工具简化编码。通过paddb示例展示向量化思维,强调内存加载(movu)、计算与存储的流程,并对比Intrinsics与编译器自动优化的局限性。

第二课:

深入控制流与内存操作:循环(jg/jl)、标签跳转、FLAGS寄存器条件判断,常量数据段(SECTION_RODATA)定义,内存偏移量计算([base + scale*index + disp]),以及利用lea指令优化地址运算。对比C循环与汇编实现的差异,通过指针偏移与计数器复用减少指令数,提升循环效率。

第三课:

高级SIMD优化与指令集实战:梳理x86指令集演变(MMX到AVX512),强调运行时CPU检测的兼容性设计;指针偏移技巧(负值计数器简化循环边界判断)、内存对齐加速(mova与movu区别);数据范围扩展(零扩展punpcklbw、符号扩展pcmpgtb)、打包解包指令(packuswb)及饱和运算;重点解析pshufb(SSSE3)实现高效数据重排,展示其在视频处理中的核心作用,如像素排列与掩码操作。

0 阅读:12
又仁看科技

又仁看科技

感谢大家的关注