0
|
1 ;
|
|
2 ; mmx format converter main loops for HERMES
|
|
3 ; Some routines Copyright (c) 1998 Christian Nentwich (c.nentwich@cs.ucl.ac.uk)
|
|
4 ; This source code is licensed under the GNU LGPL
|
|
5 ;
|
|
6 ; Please refer to the file COPYING.LIB contained in the distribution for
|
|
7 ; licensing conditions
|
|
8 ;
|
|
9
|
|
10 BITS 32
|
|
11
|
|
12 GLOBAL _ConvertMMX
|
|
13 GLOBAL _mmxreturn
|
|
14
|
|
15
|
|
16 SECTION .text
|
|
17
|
|
18 ;; _ConvertMMX:
|
|
19 ;; [ESP+8] ConverterInfo*
|
|
20 ;; --------------------------------------------------------------------------
|
|
21 ;; ConverterInfo (ebp+..)
|
|
22 ;; 0: void *s_pixels
|
|
23 ;; 4: int s_width
|
|
24 ;; 8: int s_height
|
|
25 ;; 12: int s_add
|
|
26 ;; 16: void *d_pixels
|
|
27 ;; 20: int d_width
|
|
28 ;; 24: int d_height
|
|
29 ;; 28: int d_add
|
|
30 ;; 32: void (*converter_function)()
|
|
31 ;; 36: int32 *lookup
|
|
32
|
|
33 _ConvertMMX:
|
|
34 push ebp
|
|
35 mov ebp,esp
|
|
36
|
|
37 ; Save the registers used by the blitters, necessary for optimized code
|
|
38 pusha
|
|
39
|
|
40 mov eax,[ebp+8]
|
|
41
|
|
42 cmp dword [eax+4],BYTE 0
|
|
43 je endconvert
|
|
44
|
|
45 mov ebp,eax
|
|
46
|
|
47 mov esi,[ebp+0]
|
|
48 mov edi,[ebp+16]
|
|
49
|
|
50 y_loop:
|
|
51 mov ecx,[ebp+4]
|
|
52
|
|
53 jmp [ebp+32]
|
|
54
|
|
55 _mmxreturn:
|
|
56 add esi,[ebp+12]
|
|
57 add edi,[ebp+28]
|
|
58
|
|
59 dec dword [ebp+8]
|
|
60 jnz y_loop
|
|
61
|
|
62
|
|
63 ; Restore the registers used by the blitters, necessary for optimized code
|
|
64 popa
|
|
65
|
|
66 pop ebp
|
|
67
|
|
68 endconvert:
|
|
69 emms
|
|
70
|
|
71 ret
|
|
72
|
|
73
|
|
74
|