📄 msisasm.asm
字号:
;/*
; * DCT functions, Assembler version
; * MP3 decoding
; *
; * Original Copyright (c) 1999, Jean-Michel HERVE
; * Re-programmed by ULTiMaTuM
; * Copyright (c) 2000
; *
; * Code : TuO / StG
; * Date : 08/04/99
; *
; * WARNING : only _fdct32_* has been tested. The other ones are made from
; * this function, but hasn't been tested at all. Should check it.
; * NOTE : I don't think that forward_bf and back_bf macros can be more
; * optimized (except maybe in changing algo)
; */
BITS 32
SECTION .data USE32
GLOBAL _antialias_asm
EXTERN _csa
SECTION .text USE32
;/*
; * Antialias ASM Version
; */
_antialias_asm: ;// PROC x, n : DWORD
;// ebp ebp+4
push ebp
lea ebp,[esp+8]
pushad
;// for (k = 0; k < n; k++)
;// {
mov ecx,[ebp+4]
cmp ecx,0
je near .Skip
mov ebp,[ebp]
.Loop:
;// for (i = 0; i < 8; i++)
;// {
%assign i 0
%rep 8
;// a = x[17 - i];
fld dword [ebp+(17-i)*4] ;/* a */
;// b = x[18 + i];
fld dword [ebp+(18+i)*4] ;/* b a */
;// x[17 - i] = a * csa[i][0] - b * csa[i][1];
fld st1 ;/* a b a */
fmul dword [_csa+i*8] ;/* a*csa[i][0] b a */
fld st1 ;/* b a*csa[i][0] b a */
fmul dword [_csa+i*8+4] ;/* b*csa[i][1] a*csa[i][0] b a */
fsubp st1,st0 ;/* x[17-i] b a */
fstp dword [ebp+(17-i)*4] ;/* b a */
;// x[18 + i] = b * csa[i][0] + a * csa[i][1];
fmul dword [_csa+i*8] ;/* b*csa[i][0] a */
fxch st1 ;/* a b*csa[i][0] */
fmul dword [_csa+i*8+4] ;/* a*csa[i][1] b*csa[i][0] */
faddp st1,st0 ;/* x[18+i] */
fstp dword [ebp+(18+i)*4] ;/* - */
;// }
%assign i i+1
%endrep
;// x += 18;
add ebp,18*4
;// }
dec ecx
jnz near .Loop
.Skip:
popad
pop ebp
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -