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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D  (Leído 4,728 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
[VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« en: 22 Agosto 2010, 20:27 pm »

Código
  1. '---------------------------------------------------------------------------------------
  2. ' Module    : cFastSqr
  3. ' Author    : Karcrack
  4. ' Now       : 22/08/2010 20:25
  5. ' Purpose   : Fast alternative for Integer Sqr
  6. ' History   : 22/08/2010 First cut .........................................................
  7. '---------------------------------------------------------------------------------------
  8.  
  9. Option Explicit
  10. Private sCode       As String
  11.  
  12. 'NTDLL
  13. Private Declare Sub RtlMoveMemory Lib "NTDLL" (Destination As Any, Source As Any, ByVal Length As Long)
  14.  
  15. Public Function FastSqr(ByVal lValue As Long) As Long
  16.    ' Filled with ASM later
  17. End Function
  18.  
  19. Private Sub Class_Initialize()
  20.    Dim sCode       As String
  21.    Dim lPtr        As Long
  22.  
  23.    sCode = ChrW$(&H548B) & ChrW$(&HC24) & ChrW$(&H448B) & ChrW$(&H824) & ChrW$(&HFF2) & ChrW$(&HC02A) & ChrW$(&HFF2) & ChrW$(&HC051) & ChrW$(&HFF2) & ChrW$(&HC02D) & ChrW$(&H289) & ChrW$(&HC031) & ChrW$(&HCC2) & ChrW$(&H0)
  24.  
  25.    Call RtlMoveMemory(lPtr, ByVal ObjPtr(Me), 4)
  26.    Call RtlMoveMemory(ByVal lPtr + &H1C, StrPtr(sCode), 4)
  27. End Sub
Codigo ASM utilizado:
Código:
http://karcrack.pastebin.com/CLSZPR5d

Para calcular el rendimiento:
Código:
Sub Main()
    Dim cFS         As New cFastSqr
    Dim cT          As New CTiming
    Dim i           As Long
    Dim x           As Long
   
    cT.Reset
    For i = 1 To 10000000
        x = cFS.FastSqr(i)
    Next i
    MsgBox cT.sElapsed
   
    cT.Reset
    For i = 1 To 10000000
        x = CLng(Sqr(i))
    Next i
    MsgBox cT.sElapsed
End Sub

Es aproximadamente el doble de rapida en el calculo de Raices enteras :)

Saludos ;)


En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #1 en: 23 Agosto 2010, 15:19 pm »

Dudas:
1.-Porque FastSqr esta vacio?
2.-Porque haces un clase para una sola funcion?¿

Gracias!

DoEvents¡! :P


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #2 en: 23 Agosto 2010, 15:21 pm »

1- Lo dice en el propio código
 'Filled with ASM later
:http://karcrack.pastebin.com/CLSZPR5d
2- Supongo que viene por lo de los retos, y buscar la manera más rápida de realizar una operación.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #3 en: 23 Agosto 2010, 15:42 pm »

Es una de las formas de ejecutar codigo ASM, la mas rapida.

Se utiliza una clase, y como cada objeto en VB6 tiene una vTable, donde estan los punteros de las funciones, lo que se hace es añadir la funcion, y cuando la clase se inicializa se cambia el puntero a nuestro codigo en ASM, asi que cuando se llame a ese funcion en realidad se salta al codigo ASM :D

Estoy haciendo un tutorial de como ejecutar codigo ASM en VB... a ver si lo acabo, que es un tema muy interesante ;)
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #4 en: 23 Agosto 2010, 16:22 pm »

Gracias a ambos! ;)
Si Karcrack, me interesa mucho ese tuto!! ;-)

DoEvents¡! :P
En línea

Tokes

Desconectado Desconectado

Mensajes: 140


Ver Perfil
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #5 en: 23 Agosto 2010, 18:38 pm »

¡Karcrack, por favor termínalo! ¡Por favooooooooooooor!

            Gracias.
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #6 en: 24 Agosto 2010, 20:00 pm »

Bueno, ahora mismo he retomado la escritura del tuto y tengo una mala noticia para algunos... he decidido reescribir el tuto en Ingles... espero que no suponga mucha dificultad usar el traductor de Google :P

He aqui el indice para los impacientes :laugh:
Código:
Summary:

 1.Brief introduction
 2.What should I know before reading this paper?
 3.Loading code onto the memory.
   1.Single variables.
   2.Arrays.
   3.Strings.
 4.Executing the code:
   1.CallWindowProcA/W()
   2.Virtual Function Table (VFT) patch
   3.Zombie_AddRef() or Zombie_ReleaseRef()
   4.__vbaGoSubReturn()
 5.Thanks and References
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #7 en: 24 Agosto 2010, 20:52 pm »

Perfecto  ;-)
Nah, el inglés no es problema, o si no le pido ayuda a mi primo... :laugh: :laugh: :laugh: :laugh:
Tienes alguna fecha aproximada de publicacion?¿
Gracias

DoEvents¡! :P
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #8 en: 24 Agosto 2010, 23:58 pm »

Tienes alguna fecha aproximada de publicacion?¿
Bueno, me gustaria tenerlo para antes de Septiembre, si no es posible estara para la primera semana ;)

Tu tranki que tu primo seguro que se las arregla :laugh:
En línea

xmbeat92

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: [VB6+ASM] FastSqr - Clase para hacer raices enteras raaapidamente ;D
« Respuesta #9 en: 25 Agosto 2010, 05:27 am »

Bueno, ahora mismo he retomado la escritura del tuto y tengo una mala noticia para algunos... he decidido reescribir el tuto en Ingles... espero que no suponga mucha dificultad usar el traductor de Google :P

He aqui el indice para los impacientes :laugh:
Código:
Summary:

 1.Brief introduction
 2.What should I know before reading this paper?
 3.Loading code onto the memory.
   1.Single variables.
   2.Arrays.
   3.Strings.
 4.Executing the code:
   1.CallWindowProcA/W()
   2.Virtual Function Table (VFT) patch
   3.Zombie_AddRef() or Zombie_ReleaseRef()
   4.__vbaGoSubReturn()
 5.Thanks and References
me va a interesar mucho ese tuto!!!
Aunque este en ingles....(parte del cuerpo en que se unen el muslo con el torso)
En línea

El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda para aplicarlo a capas enteras no solo al texto
Desarrollo Web
javierr 1 3,018 Último mensaje 24 Noviembre 2010, 18:37 pm
por javierr
Buscador para bienes raices
PHP
© Shadoweps ツ 2 2,708 Último mensaje 17 Mayo 2011, 18:32 pm
por merolhack
metodo de newton rapson para calcular las raices de una funcion con n grado
Programación C/C++
kiara_luna 1 18,915 Último mensaje 30 Septiembre 2011, 01:45 am
por kiara_luna
Hallar raíces [Criptografía]
Criptografía
michelmarques 0 2,592 Último mensaje 22 Julio 2012, 20:09 pm
por michelmarques
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines