|
|
@@ -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
|