David 11 rokov pred
rodič
commit
4d1377f16c
1 zmenil súbory, kde vykonal 16 pridanie a 8 odobranie
  1. 16 8
      filtros/blur_asm.asm

+ 16 - 8
filtros/blur_asm.asm

@@ -7,7 +7,7 @@ extern convulcion_matriz
 %define src 	rdi
 %define dst 	rsi
 %define cols 	rdx
-%define filas 	rcx
+%define filas 	r14
 %define sigma 	xmm0
 %define radius 	r8
 %define cont_c	r9
@@ -34,15 +34,17 @@ blur_asm:
     mov rbp, rsp                ; Stack frame
 	push r9
 	push r10
-
+	push r14
+	push r15
 .init:
+	mov r14,rcx					;guardo rcx para loop
 	mov r9, rdx					;salvo rdx por los mul
 	mov rax, PIXEL_SIZE
 	mul cols
 	mul radius 
 								; rax:=cols*pix_size*radius => cuantas filas debo saltear
-	add src, rax				; Avanzo "radius" filas (col*pix_size*radius)
-	add dst, rax				
+	;add src, rax				
+	add dst, rax				; Avanzo "radius" filas (col*pix_size*radius)
 
 	sub filas, radius			;acomodo filas para ignorar los bordes
 	sub filas, radius			;acomodo filas para ignorar los bordes
@@ -51,23 +53,27 @@ blur_asm:
 	sub cols, radius			;resto radius columnas 
 	sub cols, radius			;resto radius columnas
 
+
 	mov rax, PIXEL_SIZE
 	mul cols
 	mov cols, rax 				;cols:=cols*pix_size
 
 .iniciarFila:
-	lea src, [src+PIXEL_SIZE*radius]	;avanzo radius pixeles (borde)
+	;lea src, [src+PIXEL_SIZE*radius]	;avanzo radius pixeles (borde)
 	lea dst, [dst+PIXEL_SIZE*radius]	;avanzo radius pixeles (borde)
 	xor cont_c,cont_c
 
 .loop:
     cmp cols, cont_c           	; Comparo tamaño con el contador
     je .finFila                    ; Si ya recorri la imagen voy al final
-    ;movdqu xmm0, [src]          ; Cargo la imagen 1 => xmm0 = |B(P1)|G(P1)|R(P1)|A(P1)|B(P2)|G(P2)|......|
-	pxor xmm0,xmm0
+	;pxor xmm1,xmm1
+	;float == dword
+	
+
+    movd xmm1, [src]          ; Cargo la imagen 1 => xmm0 = |B(P1)|G(P1)|R(P1)|A(P1)|B(P2)|G(P2)|......|
 
 .write:
-    movd [dst], xmm0          ; Escribo en el destino
+    movd [dst], xmm1          ; Escribo en el destino
 .endLoop:
     add src, PIXEL_SIZE      ; Incremento 4 pixeles
     add dst, PIXEL_SIZE
@@ -85,6 +91,8 @@ blur_asm:
 	jmp .iniciarFila
 
 .fin:
+	pop r15
+	pop r14
 	pop r10
 	pop r9
     pop rbp