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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pregunta Acerca de inline...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta Acerca de inline...  (Leído 1,782 veces)
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Pregunta Acerca de inline...
« en: 19 Septiembre 2012, 02:29 am »

hey chicos, alguien sabe que tan seguro es escribir C con inline assembly ?
por ejemplo tengo una funcion en la que tengo muchas estructuras y necesito usar inline assembly y he visto
gente guardando los registros antes de usarlos, es esto necesario?
o el compilador puede determinar eso?
por ejemplo si en uno de los registros hay una direccion a mi estructura que el compilador asigna para despues usar esa direccion
pero en el inline  utilizo ese registro para guardar otro valor, seria correcto?
o SIEMPRE de debe primero guardar los registros antes de usarlos? o el compilador puede determinar ...? y guardar su propia copia?
bueno supongo debido a que me he fijado que ahora los compiladores son bien avanzados, no me extrañaria que puedan
hacer eso... pero me gustaria saber la verdad acerca de eso  ::)

hice algunas programas de pruebas usando algunos registros y no me dio problema... pero en nuestros codigos de cientos de lineas?


« Última modificación: 19 Septiembre 2012, 02:31 am por RHL » En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Pregunta Acerca de inline...
« Respuesta #1 en: 19 Septiembre 2012, 19:46 pm »

Hay muchísima gente , que para utilizar inline assembly hace:

PUSHAD : Guarda todo los registros en la pila.
POPA    : Saca todos los registros de la pila.
¿Que si es bueno? Pues no sé , se utiliza como método de seguridad , el compilador de C , para las funciones siempre hace el mismo proceso:
Código
  1. push ebp
  2. mov ebp,esp
  3. mov eax,[ebp+4];Primer argumento si se pasa un int a la función.
  4. ;más código...
  5. pop ebp
  6. leave
  7. ret
Por lo que si hacemos un PUSHA y un POPA , nos aseguramos de que los registros estén igual , nada más.Otra manera es compilar a ASM , que el gcc tiene para hacer eso , y mirar como queda el código , o ejecutarlo y si falla ya sabes que algo tiene que haber.En cuanto al compilador creo que no puede hacerlo, es algo que si lo ponen los programadores será porque no está ahí para no hacer nada.

¡Un saludo!


« Última modificación: 19 Septiembre 2012, 20:02 pm por avesudra » En línea

Regístrate en
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pregunta acerca del softice?
Ingeniería Inversa
KremAmAk 3 2,514 Último mensaje 23 Mayo 2005, 08:19 am
por KremAmAk
Pregunta acerca de Softice « 1 2 »
Ingeniería Inversa
Canelis 15 6,882 Último mensaje 29 Julio 2005, 00:11 am
por Mastikore
pregunta acerca del wireshark
Hacking
fedee975 1 2,647 Último mensaje 19 Abril 2013, 03:17 am
por revil8
Pregunta acerca de python
Foro Libre
hat 1 1,264 Último mensaje 13 Septiembre 2018, 15:29 pm
por Serapis
Pregunta acerca de windows
Windows
Anon17 2 2,485 Último mensaje 22 Noviembre 2019, 00:42 am
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines