Home | History | Annotate | Download | only in hermes
      1 ;
      2 ; mmx format converter main loops for HERMES
      3 ; Some routines Copyright (c) 1998 Christian Nentwich (c.nentwich (a] 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 %include "common.inc"
     13 
     14 SDL_FUNC _ConvertMMX
     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 	call [ebp+32]
     54 
     55 	add esi,[ebp+12]
     56 	add edi,[ebp+28]
     57 	
     58 	dec dword  [ebp+8]
     59 	jnz y_loop
     60 
     61 	
     62 ; Restore the registers used by the blitters, necessary for optimized code
     63 	popa
     64 
     65 	pop ebp
     66 
     67 endconvert:
     68 	emms
     69 	
     70 	ret		
     71 
     72 %ifidn __OUTPUT_FORMAT__,elf
     73 section .note.GNU-stack noalloc noexec nowrite progbits
     74 %endif
     75