Título: Errores de compilación de pasar de intel a AT&T Publicado por: Nork 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
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 Título: Re: Errores de compilación de pasar de intel a AT&T Publicado por: Arkangel_0x7C5 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 Título: Re: Errores de compilación de pasar de intel a AT&T Publicado por: Nork 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! Título: Re: Errores de compilación de pasar de intel a AT&T Publicado por: ny0x 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 Título: Re: Errores de compilación de pasar de intel a AT&T Publicado por: Arkangel_0x7C5 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. Título: Re: Errores de compilación de pasar de intel a AT&T Publicado por: YST en 24 Mayo 2009, 18:53 pm Una correción ortografica a arkangel es EIP ( IP ) no EPI :P
Título: Re: Errores de compilación de pasar de intel a AT&T Publicado por: bizco en 24 Mayo 2009, 20:59 pm EPI ->(http://www.misscompras.com/uploaded/normal/peluche_epi_que_risa.jpg)
Título: Re: Errores de compilación de pasar de intel a AT&T Publicado por: Nork en 25 Mayo 2009, 21:11 pm Gracias! :)
|