elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Movimiento de mascara
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Movimiento de mascara  (Leído 3,632 veces)
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Movimiento de mascara
« en: 19 Marzo 2014, 19:02 pm »

Hola

Tengo que mover los byte que tengan el bit 7 en 1, ya tengo una funcion aplicada con maskmovq que hace precisamente lo que quiero, pero lo malo de esa instruccion es que a la CPU le cuesta 32 OPS.

Código
  1. ; %mm0 = 0x8001018080010180
  2.  
  3. maskmovq %mm0, %mm0  ; (%rdi) = 0x8000008080000080

Hay otra instruccion llamada pmovmskb es 1 OPS, que copia el bit 7 en un registro de 32 bits haciendo un octeo con los registros que tienen ese bit en 1.

Código
  1. ; %mm0 = 0x8001018080010180
  2.  
  3. pmovmskb %mm0, %esi  ; %esi = 0x99

Bien alguien me da alguna idea de como construir una mascara, a partir de ese octeo para copiar los byte tal y como lo hace maskmovq?

Un saludo.


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Movimiento de mascara
« Respuesta #1 en: 22 Marzo 2014, 16:29 pm »

He visto varios temas tuyos acerca de cómo optimizar con extensiones asi que te recomiendo este foro:
http://www.masm32.com/board/index.php
Usuarios con bastante conocimiento en ensamblador en general.


En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Movimiento de mascara
« Respuesta #2 en: 22 Marzo 2014, 18:37 pm »

Si por lo que he visto hay buenas preguntas, aun estoy con AES tengo todas las funciones menos la mixcolumns, multiplico el registro xmm por 2 y 3, ahora solo me queda ordenarlo corriendo los bits.

Código:
https://www.ecs.csus.edu/csc/iac/docs/students/Vinit_Azad_MS_Report.pdf

Si miran ese pdf en la pagina 29 veran una tabla con los ciclos de cada funcion, no se de donde sera esa tabla pero la he visto por muchos lados, sumando todas las funciones 1 ronda cuesta unos 222, yo calculo que mi ronda estara en unos 170 - 180.

Tambien cree una funcion strlen con los xmm para el mismo AES, no he calculado la potencia porque no se hacerlo, pero segurisimo que peta mil veces a la de C/C++.

Pero todo esto son para mis proyectos, me gustaria compartirlos, pero no, a no ser que se conbinen con algun code como puede ser un malware.

Un saludo.
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Movimiento de mascara
« Respuesta #3 en: 22 Marzo 2014, 19:53 pm »

Si por lo que he visto hay buenas preguntas, aun estoy con AES tengo todas las funciones menos la mixcolumns, multiplico el registro xmm por 2 y 3, ahora solo me queda ordenarlo corriendo los bits.

Código:
https://www.ecs.csus.edu/csc/iac/docs/students/Vinit_Azad_MS_Report.pdf

Si miran ese pdf en la pagina 29 veran una tabla con los ciclos de cada funcion, no se de donde sera esa tabla pero la he visto por muchos lados, sumando todas las funciones 1 ronda cuesta unos 222, yo calculo que mi ronda estara en unos 170 - 180.
Mira esta clase hecha por MichaelW:
http://masm32.com/board/index.php?topic=49.msg10832;topicseen#msg10832
Sirve para calcular los ciclos que require el procesador para ejecutar un bloque de código.

Tambien cree una funcion strlen con los xmm para el mismo AES, no he calculado la potencia porque no se hacerlo, pero segurisimo que peta mil veces a la de C/C++.
Pues habria de ver si activamos las extensiones en el compilador y a comparar.

Pero todo esto son para mis proyectos, me gustaria compartirlos, pero no, a no ser que se conbinen con algun code como puede ser un malware.

Un saludo.
Pues si lo vas a compartir, compartelo, de ninguna manera podes controlar que tu código sea sólo usado para aplicaciónes legitimas y no para
malware, es como decir que los creadores que compiladores, ensambladores sólo los programaron para crear aplicaciónes legitimas y no para malware.
Pero para que despreocuparte te doy mi punto de vista, nunca usaria un código que utilizaria extensiones tan recientes para malware ya que
estaria sujeto a funcionar sólo en cierto tipo de procesadores, además de dejarle bastante facil el trabajo a las compañias de AV de agregar
sus firmas en mi ejecutable, etc. ellos no van de la mano

En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Movimiento de mascara
« Respuesta #4 en: 22 Marzo 2014, 21:28 pm »

No, me referia en compartir el codigo para algun proyecto como puede ser en malware, o en otro y sacar algo de dinero.

Las extensiones son de la SSE a la SSE2, son compatibles, no estoy usando las AVX.

Por lo que veo aqui hay muchos desarrolladores, pero por lo que veo a nadie le interesa las implementaciones que creo, bueno como hay muchas strlen por hay comparto la mia, si alguien quiere hacer algo pues que me comente.

Código:
http://foro.elhacker.net/asm/aporte_strlen_xmm-t411158.0.html

Ya puedes analizarla si quieres x64Core, pero las funciones AES no digo nada.

Un saludo.
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Movimiento de mascara
« Respuesta #5 en: 22 Marzo 2014, 23:46 pm »

No, me referia en compartir el codigo para algun proyecto como puede ser en malware, o en otro y sacar algo de dinero.

Las extensiones son de la SSE a la SSE2, son compatibles, no estoy usando las AVX.

Por lo que veo aqui hay muchos desarrolladores, pero por lo que veo a nadie le interesa las implementaciones que creo, bueno como hay muchas strlen por hay comparto la mia, si alguien quiere hacer algo pues que me comente.

Código:
http://foro.elhacker.net/asm/aporte_strlen_xmm-t411158.0.html

Ya puedes analizarla si quieres x64Core, pero las funciones AES no digo nada.

Un saludo.
No es que a nadie le interese, sino que estas en el foro incorrecto, conozco a muchos programadores amantes del
lenguaje ensamblador como tú, ellos que se toman un tiempo para optimizar un bloque de código, que toman el lenguaje
ensamblador como un 'arte' y aquí hay muy pocas personas o ninguna. Ve al foro que te mencione ellos tomaran más
interes y aprenderas mucho más cosas con ellos ^^. no digo que un foro es mejor que otro, simplemente son diferentes.
En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Movimiento de mascara
« Respuesta #6 en: 23 Marzo 2014, 23:16 pm »

Bueno ya la optimize, de 64 OPS que consume maskmovdqu yo lo hice en 4 OPS jeje.

Código
  1. .section .data
  2.  
  3. bts0_: .quad 0x8080808080808080,0x8080808080808080
  4.  
  5. .section .text
  6. .globl _start
  7.  
  8. _start:
  9.  
  10. movdqa %xmm0, %xmm1
  11.  
  12. pand bts0_, %xmm0
  13. pcmpeqb bts0_, %xmm0
  14. pand %xmm0, %xmm1

Por cierto, deje la respuesta en este foro y en el otro, buen foro tienes razon, pero lo saque todo yo jeje.

Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mascara de RED
Redes
ajimenezl 5 4,608 Último mensaje 23 Julio 2010, 17:02 pm
por moyo18
Mascara de RED e IP
Redes
ajimenezl 1 3,100 Último mensaje 24 Julio 2010, 10:35 am
por imoen
Calculo Mascara
Redes
asd66 2 6,446 Último mensaje 18 Febrero 2011, 14:31 pm
por asd66
Duda con mascara 255.255.0.0
Redes
virtualedu 1 3,072 Último mensaje 23 Septiembre 2012, 10:02 am
por moikano→@
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines