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 General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Errores de compilación de pasar de intel a AT&T
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Errores de compilación de pasar de intel a AT&T  (Leído 4,806 veces)
Nork

Desconectado Desconectado

Mensajes: 196



Ver Perfil
Errores de compilación de pasar de intel a AT&T
« en: 24 Mayo 2009, 15:38 pm »

Buenas :-* Estoy pasando un pequeño código que usa la sintaxis de intel a AT&T pero hay uno que se me resiste:

Código
  1. __asm("movl  dword ptr args, %eax");

El error que me da el compilador del Dev C++ es:

Citar
junk `ptr args' after epresionje

He buscado por google pero no he encontrado nada de momento,

alguien tiene alguna idea?

Gracias!


P.D: No sé porque no sale bien el error :S Debería salir ex-pres-sion pero no sé porque se traduce a epresionje xD


« Última modificación: 24 Mayo 2009, 15:40 pm por Nork » En línea

C' Est La Vie
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Errores de compilación de pasar de intel a AT&T
« Respuesta #1 en: 24 Mayo 2009, 16:38 pm »

es por lo de: dword ptr

Seria movl 8(%ebp), %eax

si args es el primer argumento, si es el segundo seria 0xC(%ebp)
Si es una variable local entonces seria a partir de -4(%ebp) hacia abajo.
Y si es una gloval ($args).

Saludos


En línea

Nork

Desconectado Desconectado

Mensajes: 196



Ver Perfil
Re: Errores de compilación de pasar de intel a AT&T
« Respuesta #2 en: 24 Mayo 2009, 17:12 pm »

No entiendo, si dword ptr hace referencia a los argumentos que tiene que ver ebp? Y como sé que número menor que -5 tengo que poner?

Soy prácticamente nulo en asm y me pierdo en según que cosas :/


Gracias!
En línea

C' Est La Vie
ny0x


Desconectado Desconectado

Mensajes: 336


Ver Perfil
Re: Errores de compilación de pasar de intel a AT&T
« Respuesta #3 en: 24 Mayo 2009, 17:48 pm »

porque windows usa stdcall y atraves de esta los parametros se pasan en la pila, y ebp sirve como indice para apuntar a los valores guardados en la pila. ebp + 8 primer parametro ebp + 12 segundo ebp + 4 es la direccion de retorno. pero como es at&t es 12(%ebp) 8(%ebp).
bueno eso tengo entendido :P
En línea

Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Errores de compilación de pasar de intel a AT&T
« Respuesta #4 en: 24 Mayo 2009, 17:55 pm »

pues mira, ebp marca siempre el principio del espacio de pila. A medida que haces push el valor de esp, que marca la cima de la pila disminuye.

cuando haces:

push Param2
push Param1
call    MiFuncion

El call pone en la pila eip que luego usara el ret para volver, eso son esp+4 para el primer parámetro.
Después se hace push ebp, lo que son entonces esp+8 para el primer parámetro.

Y luego se copia el valor de esp en ebp.por lo que el primer parámetro es siempre ebp+8.

Y las locales, lo que se hace es restarle el tamaño de las var local a esp. Con lo que si tienes una variable local que ocupa 4bytes y es la primera, la encontraras en ebp-4. si es la segunda pues estara en ebp-(sizeVar1+sizeVar2).

Esto son cosas que se ven muy claras con el OllyDbg al depurar un programa que tu mismo has hecho en asm.

Saludos

EDITO:Ya esta YST tildes y todo.
« Última modificación: 24 Mayo 2009, 19:05 pm por Arcangel_0x7C5 » En línea

YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Errores de compilación de pasar de intel a AT&T
« Respuesta #5 en: 24 Mayo 2009, 18:53 pm »

Una correción ortografica a arkangel es EIP ( IP ) no EPI :P 
En línea



Yo le enseñe a Kayser a usar objetos en ASM
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Errores de compilación de pasar de intel a AT&T
« Respuesta #6 en: 24 Mayo 2009, 20:59 pm »

EPI ->
En línea

Nork

Desconectado Desconectado

Mensajes: 196



Ver Perfil
Re: Errores de compilación de pasar de intel a AT&T
« Respuesta #7 en: 25 Mayo 2009, 21:11 pm »

Gracias!  :)
En línea

C' Est La Vie
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines