序
x86优化包含的知识点太多,并且win64\linux64\x86_32 都有不同的形参传递规则,因此本文的目的不是讲解这些规则,而是讲解开源代码中如何通过代码对这些规则进行统一化管理。
1、代码讲解
拿libvpx1.4/ffmpeg/turboJPEG中x86inc.asm讲解,尽管这些开源库中x86inc.asm不是完全一样,但大同小异,可把这些小异认为是一个演进过程。打住!进入正文:
基本知识(冰山一角)
(1)MMX寄存器:MMX寄存器由8个64位寄存器(MM0~MM7)组成
(2)SSE与AVX寄存器:SSE都有XMM0-XMM7这8个128位寄存器,x86_64系统还有额外的8个寄存器(XMM0~XMM15)。而支持AVX指令集的CPU,他们把XMM*寄存器扩充为256寄存器。
在汇编代码中,不知各位读者是否读过下段类似的代码,如果没有读过,那么此文也不必读了!!
INIT_XMM sse
cglobal block_error, 3, 3, 8, uqc, dqc, size, ssz
cglobal