mmxshift.asm

来自「这是G.723和G.729的音频编解码的源代码」· 汇编 代码 · 共 100 行

ASM
100
字号
.nolist
INCLUDE iammx.inc                   ; IAMMX Emulator Macros
.list

.586p
.model FLAT

.data

.const


.code

COMMENT ^
void PrevIDCTShift(
	short* dctcoeffshort
	);
^

PrevIDCTShift PROC NEAR C USES ESI,
			dctcoeffshort: PTR SWORD
; above (commented) line is an example of declaring local parameters

	mov		esi,	dctcoeffshort

	movq	mm0,	[esi]

	movq	mm1,	[esi+8]
	psllw	mm0,	4

	movq	mm2,	[esi+16]
	psllw	mm1,	4

	movq	mm3,	[esi+24]
	psllw	mm2,	4

	movq	[esi],	mm0
	movq	mm4,	[esi+32]
	psllw	mm3,	4

	movq	[esi+8],	mm1
	movq	mm5,	[esi+40]
	psllw	mm4,	4

	movq	[esi+16],	mm2
	movq	mm6,	[esi+48]
	psllw	mm5,	4

	movq	[esi+24],	mm3
	movq	mm7,	[esi+56]
	psllw	mm6,	4


	movq	[esi+32],	mm4
	movq	mm0,	[esi+64]
	psllw	mm7,	4

	movq	[esi+40],	mm5
	movq	mm1,	[esi+72]
	psllw	mm0,	4

	movq	[esi+48],	mm6
	movq	mm2,	[esi+80]
	psllw	mm1,	4

	movq	[esi+56],	mm7
	movq	mm3,	[esi+88]
	psllw	mm2,	4

	movq	[esi+64],	mm0
	movq	mm4,	[esi+96]
	psllw	mm3,	4

	movq	[esi+72],	mm1
	movq	mm5,	[esi+104]
	psllw	mm4,	4

	movq	[esi+80],	mm2
	movq	mm6,	[esi+112]
	psllw	mm5,	4

	movq	[esi+88],	mm3
	movq	mm7,	[esi+120]
	psllw	mm6,	4

	movq	[esi+96],	mm4
	psllw	mm7,	4

	movq	[esi+104],	mm5
	movq	[esi+112],	mm6
	movq	[esi+120],	mm7

	emms
	ret


PrevIDCTShift ENDP
END

⌨️ 快捷键说明

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