src/hermes/mmx_main.asm
author Sam Lantinga
Mon, 06 Feb 2006 08:28:51 +0000
changeset 1330 450721ad5436
parent 1199 2d6dc7de1145
child 1697 393092a3ebf6
permissions -rw-r--r--
It's now possible to build SDL without any C runtime at all on Windows,
using Visual C++ 2005
     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 SECTION .text
    16 		
    17 ;; _ConvertMMX:	 
    18 ;; [ESP+8] ConverterInfo*
    19 ;; --------------------------------------------------------------------------
    20 ;; ConverterInfo (ebp+..)
    21 ;;   0:	void *s_pixels
    22 ;;   4:	int s_width
    23 ;;   8:	int s_height
    24 ;;  12:	int s_add
    25 ;;  16:	void *d_pixels
    26 ;;  20:	int d_width
    27 ;;  24:	int d_height
    28 ;;  28:	int d_add
    29 ;;  32:	void (*converter_function)() 
    30 ;;  36: int32 *lookup
    31 	
    32 _ConvertMMX:
    33 	push ebp
    34 	mov ebp,esp
    35 
    36 ; Save the registers used by the blitters, necessary for optimized code
    37 	pusha
    38 
    39 	mov eax,[ebp+8]
    40 
    41         cmp dword [eax+4],BYTE 0
    42 	je endconvert
    43 	
    44 	mov ebp,eax
    45 	
    46 	mov esi,[ebp+0]
    47 	mov edi,[ebp+16]
    48 	
    49 y_loop:	
    50 	mov ecx,[ebp+4]
    51 
    52 	jmp [ebp+32]
    53 
    54 _mmxreturn:	
    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