⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vectdct.asm

📁 这是G.723和G.729的音频编解码的源代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:

		movq	mm3,	mm6
		psrad		mm5,	15		
;mm5--Result3 Result2
		packssdw	mm2,	mm5
		movq	mm4,	mm7


		pmaddwd mm3,	[edi+80]
		paddd	mm0,	mm1

		movq	[edx+64],	mm2
		movq	mm2,	mm0

		pmaddwd	mm4,	[edi+88]
		movq	mm1,	mm7


		pmaddwd	mm1,	[edi+104]
		psrlq	mm2,	32

		paddd	mm2,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+96]
		paddd	mm3,	mm4

		movq	mm5,	mm3
		movq	mm4,	mm7

		pmaddwd	mm4,	[edi+120]
		psrlq	mm5,	32

		paddd	mm3,	mm5
		paddd	mm0,	mm1

		punpckldq	mm2,mm3	
		movq	mm3,	mm6

		pmaddwd mm3,	[edi+112]
		psrad		mm2,	15		
;mm2--Result1 Result0


		movq	mm5,	mm0
		psrlq	mm0,	32

		paddd	mm5,	mm0



		movq	mm0,	[esi+80]
		paddd	mm3,	mm4

		movq	mm6,	mm0
		movq	mm1,	mm3

		pmaddwd mm0,	[edi]
		psrlq	mm1,	32

		paddd	mm3,	mm1


		movq	mm1,	[esi+88]
		punpckldq	mm5,	mm3

		movq	mm7,	mm1
		psrad	mm5,	15		

;mm5--Result3 Result2
		pmaddwd	mm1,	[edi+8]
		packssdw	mm2,	mm5

		movq	mm3,	mm6
		movq	mm4,	mm7

		movq	[edx+72],	mm2


		pmaddwd mm3,	[edi+16]
		paddd	mm0,	mm1

		pmaddwd	mm4,	[edi+24]
		movq	mm1,	mm7

		pmaddwd	mm1,	[edi+40]
		movq	mm2,	mm0

		psrlq	mm2,	32

		paddd	mm2,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+32]
		paddd	mm3,	mm4

		movq	mm4,	mm7
		movq	mm5,	mm3

		pmaddwd	mm4,	[edi+56]
		psrlq	mm5,	32


		paddd	mm0,	mm1
		paddd	mm3,	mm5

		punpckldq	mm2,	mm3
		movq	mm3,	mm6

		pmaddwd mm3,	[edi+48]
		psrad		mm2,	15		
;mm2--Result1 Result0


		movq	mm5,	mm0
		psrlq	mm0,	32

		paddd	mm5,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+64]
		paddd	mm3,	mm4

		movq	mm1,	mm3
		psrlq	mm3,	32

		paddd	mm3,	mm1
		movq	mm1,	mm7


		pmaddwd	mm1,	[edi+72]
		punpckldq	mm5,	mm3

		movq	mm3,	mm6
		psrad	mm5,	15		
;mm5--Result3 Result2
		packssdw	mm2,	mm5
		movq	mm4,	mm7


		pmaddwd mm3,	[edi+80]
		paddd	mm0,	mm1

		movq	[edx+80],	mm2
		movq	mm2,	mm0

		pmaddwd	mm4,	[edi+88]
		movq	mm1,	mm7


		pmaddwd	mm1,	[edi+104]
		psrlq	mm2,	32

		paddd	mm2,	mm0
		movq	mm0,	mm6



		pmaddwd mm0,	[edi+96]
		paddd	mm3,	mm4

		movq	mm5,	mm3
		movq	mm4,	mm7

		pmaddwd	mm4,	[edi+120]
		psrlq	mm5,	32

		paddd	mm3,	mm5
		paddd	mm0,	mm1

		punpckldq	mm2,	mm3	
		movq	mm3,	mm6
			
		pmaddwd mm3,	[edi+112]
		psrad		mm2,	15		
;mm2--Result1 Result0


		movq	mm5,	mm0
		psrlq	mm0,	32

		paddd	mm5,	mm0



		movq	mm0,	[esi+96]
		paddd	mm3,	mm4

		movq	mm1,	mm3
		psrlq	mm3,	32

		movq	mm6,	mm0
		paddd	mm3,	mm1

		pmaddwd mm0,	[edi]
		punpckldq	mm5,	mm3



		movq	mm1,	[esi+104]
		psrad		mm5,	15		

		movq	mm7,	mm1
		packssdw	mm2,	mm5
;mm5--Result3 Result2
		pmaddwd	mm1,	[edi+8]
		movq	mm3,	mm6

		movq	[edx+88],	mm2
		movq	mm4,	mm7

		pmaddwd mm3,	[edi+16]

		pmaddwd	mm4,	[edi+24]
		paddd	mm0,	mm1

		movq	mm2,	mm0
		movq	mm1,	mm7

		pmaddwd	mm1,	[edi+40]
		psrlq	mm2,	32

		paddd	mm2,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+32]
		paddd	mm3,	mm4

		movq	mm4,	mm7
		movq	mm5,	mm3

		pmaddwd	mm4,	[edi+56]
		psrlq	mm5,	32


		paddd	mm0,	mm1
		paddd	mm3,	mm5

		punpckldq	mm2,	mm3
		movq	mm3,	mm6

		pmaddwd mm3,	[edi+48]
		psrad		mm2,	15		
;mm2--Result1 Result0


		movq	mm5,	mm0
		psrlq	mm0,	32

		paddd	mm5,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+64]
		paddd	mm3,	mm4

		movq	mm1,	mm3
		psrlq	mm3,	32

		paddd	mm3,	mm1
		movq	mm1,	mm7


		pmaddwd	mm1,	[edi+72]
		punpckldq	mm5,	mm3

		movq	mm3,	mm6
		psrad		mm5,	15		
;mm5--Result3 Result2
		packssdw	mm2,	mm5
		movq	mm4,	mm7

		pmaddwd mm3,	[edi+80]
		paddd	mm0,	mm1

		movq	[edx+96],	mm2
		movq	mm2,	mm0

		pmaddwd	mm4,	[edi+88]
		movq	mm1,	mm7


		pmaddwd	mm1,	[edi+104]
		psrlq	mm2,	32

		paddd	mm2,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+96]
		paddd	mm3,	mm4

		movq	mm5,	mm3
		movq	mm4,	mm7

		pmaddwd	mm4,	[edi+120]
		psrlq	mm5,	32

		paddd	mm3,	mm5
		paddd	mm0,	mm1

		punpckldq	mm2,	mm3	
		movq	mm3,	mm6

		pmaddwd mm3,	[edi+112]
		psrad	mm2,	15		
;mm2--Result1 Result0


		movq	mm5,	mm0
		psrlq	mm0,	32

		paddd	mm5,	mm0

		movq	mm0,	[esi+112]
		paddd	mm3,	mm4

		movq	mm1,	mm3
		psrlq	mm3,	32

		movq	mm6,	mm0
		paddd	mm3,	mm1

		pmaddwd mm0,	[edi]
		punpckldq	mm5,	mm3


		movq	mm1,	[esi+120]
		psrad	mm5,	15	
			
		movq	mm7,	mm1
		packssdw	mm2,	mm5
;mm5--Result3 Result2
		pmaddwd	mm1,	[edi+8]
		movq	mm3,	mm6

		movq	[edx+104],	mm2
		movq	mm4,	mm7


		pmaddwd mm3,	[edi+16]

		pmaddwd	mm4,	[edi+24]
		paddd	mm0,	mm1

		movq	mm2,	mm0
		movq	mm1,	mm7

		pmaddwd	mm1,	[edi+40]
		psrlq	mm2,	32

		paddd	mm2,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+32]
		paddd	mm3,	mm4

		movq	mm4,	mm7
		movq	mm5,	mm3

		pmaddwd	mm4,	[edi+56]
		psrlq	mm5,	32


		paddd	mm0,	mm1
		paddd	mm3,	mm5

		punpckldq	mm2,	mm3
		movq	mm3,	mm6

		pmaddwd mm3,	[edi+48]
		psrad		mm2,	15		
;mm2--Result1 Result0


		movq	mm5,	mm0
		psrlq	mm0,	32

		paddd	mm5,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+64]
		paddd	mm3,	mm4

		movq	mm1,	mm3
		psrlq	mm3,	32

		paddd	mm3,	mm1
		movq	mm1,	mm7


		pmaddwd	mm1,	[edi+72]
		punpckldq	mm5,	mm3

		movq	mm3,	mm6
		psrad	mm5,	15		
;mm5--Result3 Result2
		packssdw	mm2,	mm5
		movq	mm4,	mm7


		pmaddwd mm3,	[edi+80]
		paddd	mm0,	mm1

		movq	[edx+112],	mm2
		movq	mm2,	mm0

		pmaddwd	mm4,	[edi+88]
		movq	mm1,	mm7

		pmaddwd	mm1,	[edi+104]
		psrlq	mm2,	32

		paddd	mm2,	mm0
		movq	mm0,	mm6

		pmaddwd mm0,	[edi+96]
		paddd	mm3,	mm4

		movq	mm4,	mm7
		movq	mm5,	mm3

		pmaddwd	mm4,	[edi+120]
		psrlq	mm5,	32

		paddd	mm3,	mm5
		paddd	mm0,	mm1

		punpckldq	mm2,	mm3	
		movq	mm3,	mm6
			
		pmaddwd mm3,	[edi+112]
		psrad	mm2,	15		
;mm2--Result1 Result0


		movq	mm5,	mm0
		psrlq	mm0,	32

		pop		edi
		paddd	mm5,	mm0


		paddd	mm3,	mm4

		movq	mm1,	mm3

		psrlq	mm3,	32
		paddd	mm3,	mm1


		punpckldq	mm5,	mm3

		psrad		mm5,	15		
;mm5--Result3 Result2
		packssdw	mm2,	mm5
		movq	[edx+120],	mm2
		pop		edx

		emms
		ret

MatrixMulti ENDP


COMMENT ^
	void MatrixTrans(short *Src);
^

MatrixTrans PROC NEAR C USES ESI,
            Src:PTR SWORD

		mov		esi,	Src

		movq	mm0,	[esi]
		movq	mm1,	[esi+16]
		movq	mm6,	mm0
		movq	mm2,	[esi+32]
		movq	mm3,	[esi+48]
		movq	mm7,	mm2


		punpcklwd mm0,	mm1

		punpcklwd mm2,	mm3
		movq	mm5,	mm0

		punpckldq mm0,	mm2

		punpckhdq mm5,	mm2

		movq	[esi],	mm0
		punpckhwd mm6,	mm1

		movq	[esi+16],mm5
		punpckhwd mm7,	mm3

		movq	mm0,	[esi+8]
		movq	mm5,	mm6

		movq	mm1,	[esi+24]
		punpckldq mm6,	mm7

		movq	mm2,	[esi+40]
		punpckhdq mm5,	mm7

		movq	[esi+32],mm6
		movq	mm7,	mm2

		movq	mm3,	[esi+56]
		movq	mm6,	mm0

		movq	[esi+48],mm5
		punpcklwd mm0,	mm1

		punpcklwd mm2,	mm3
		movq	mm5,	mm0

		movq	mm4,	[esi+64]
		punpckldq mm0,	mm2

		punpckhdq mm5,	mm2

		movq	[esi+64],mm0
		punpckhwd mm6,	mm1

		movq	mm0,	[esi+80]
		punpckhwd mm7,	mm3

		movq	[esi+80],mm5

		movq	mm2,	[esi+96]
		movq	mm5,	mm6

		movq	mm3,	[esi+112]
		punpckldq mm6,	mm7


		movq	mm1,	mm0
		punpckhdq mm5,	mm7

		movq	[esi+96],mm6
		movq	mm0,	mm4

		movq	[esi+112],mm5
		movq	mm6,	mm0


		movq	mm7,	mm2
		punpcklwd mm0,	mm1

		punpcklwd mm2,	mm3
		movq	mm5,	mm0

		punpckldq mm0,	mm2

		punpckhdq mm5,	mm2

		movq	[esi+8],mm0
		punpckhwd mm6,	mm1

		movq	[esi+24],mm5
		punpckhwd mm7,	mm3

		movq	mm0,	[esi+72]
		movq	mm5,	mm6

		movq	mm1,	[esi+88]
		punpckldq mm6,	mm7

		movq	mm2,	[esi+104]
		punpckhdq mm5,	mm7

		movq	[esi+40],mm6
		movq	mm7,	mm2

		movq	[esi+56],mm5
		movq	mm6,	mm0


		movq	mm3,	[esi+120]
		punpcklwd mm0,	mm1

		punpcklwd mm2,	mm3
		movq	mm5,	mm0

		punpckldq mm0,	mm2

		punpckhdq mm5,	mm2

		movq	[esi+72],	mm0
		punpckhwd mm6,	mm1

		movq	[esi+88],mm5
		punpckhwd mm7,	mm3

		movq	mm5,	mm6
		punpckldq mm6,	mm7

		punpckhdq mm5,	mm7

		movq	[esi+104],mm6

		movq	[esi+120],mm5

		emms
		ret
MatrixTrans ENDP

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -