Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: lapras en 4 Septiembre 2009, 13:31 pm



Título: sintaxis intel y AT&T
Publicado por: lapras en 4 Septiembre 2009, 13:31 pm
hola estoy empezando con el esamblador y me gustaria saber si con el compilador gcc es posible que al compilar codigo en C me genere el codigo ensamblador en sintaxis intel en vez de AT&T cuando uso la opcion -S. Tambien quisiera saber que diferencias hay entre las dos sintaxis y cual es mas recomendable aprender. Por cierto ¿es muy diferente el ensamblador de 32 bits y el de 64?

gracias de antemano


Título: Re: sintaxis intel y AT&T
Publicado por: karmany en 8 Septiembre 2009, 18:23 pm
La sintaxis intel o la AT&T dependen normalmente del compilador que uses y de las opciones que ellos tengan.

Algunos depuradores te permiten elegir una u otra.

La sintaxis intel es utilizada por ejemplo por Microsoft y normalmente es relacionada con Windows. La sintaxis AT&T es relacionada con Linux. Cada persona tiene su opinión al respecto, pero para mí tienen bastantes diferencias...de AT&T conozco bastante poco.

Mira acabo de echar un vistazo a un libro que tengo de programación en asm y estoy viendo que con gcc es posible usar la sintaxis intel. No tengo ni idea de cómo se debe configurar pero la sintaxis que estoy leyendo está en intel.

Respecto al ensamblador de 32 y de 64 bits pues tienen sus diferencias, sólo piensa que los registros tienen un tamaño doble. Piensa también que si programas en 32 bits, tu programa servirá también para ordenadores a 64 pero no al contrario.


Título: Re: sintaxis intel y AT&T
Publicado por: lapras en 9 Septiembre 2009, 13:58 pm
En primer lugar gracias por responder :D
He esta viendo por ahi y he visto que la sintaxis intel se usa muchisimo mas, pero me da que tanpoco son tan diferentes.
en el gnu as puedes poner .intel_syntax para activar la sintaxis intel y .att_syntax para cuando quieres volver a la de por defecto, pero mi pregunta era : con el conpilador de c gcc si escribes -S en vez de dar un ejecutable da un fichero equivalente en ensamblador y me parecia util para aprender ensamblador por que ya domino C mas o menos, pero el problema es que al hacer esto el fichero que te da esta en syntaxis AT&T y los libros que tengo no dicen nada de AT&T y queria saber si hay alguna manera de que te de el fichero en sintaxis intel.

En cuanto a lo de 32 bits y 64 yo creia que los libros que compre tratarian mas los nuevos procesadores y dan un poco de 32 bits y gracias por que es casi todo de 16 bits a pesar de ser tan actuales: (Es que yo uso AMD Athlon 64 x2¿cuando hay mas CPUs hay mas registros? voy mas perdido...)
(http://www.paquebote.com/portadaslibros/9788441525115.jpg)               (http://www.fcharte.com/libros/84-415-2606-8.jpg)

He encontado esto y creo que es sintaxis AT&T de 64 bits ¿es posible que AMD este mas relacionado con esta?


Título: Re: sintaxis intel y AT&T
Publicado por: Erik# en 9 Septiembre 2009, 14:46 pm
Ya hay unos registros preseleccionados para 8 bits, 16 bits, 32 bits, 64 bits y powerpc (creo)


Título: Re: sintaxis intel y AT&T
Publicado por: lapras en 10 Septiembre 2009, 15:46 pm
Si parece que para los de 16 no tiene prefijo, los de 32 tienen prefijo e y los de 64 tienen el prefijo rex.
ej:

16 -> ax
32 -> eax
64 -> rax

Mira en mi libro pone que un registro RAX puede estar dividido en 2 registros EAX y a su vez cada uno de estos estar dividido en AX y cada AX estar dividido en AH y AL, que cosas.
Ya voy pillando esto un poco, pero esta xungooo :¬¬


Título: Re: sintaxis intel y AT&T
Publicado por: lapras en 10 Septiembre 2009, 23:05 pm
Por cierto cuando hay 2 CPUs hay el doble de registros? como se accede al segundo procesador ?
gracias


Título: Re: sintaxis intel y AT&T
Publicado por: Erik# en 10 Septiembre 2009, 23:15 pm
Creo que es imposible, porque tu trabajas con 1 PC no con dos a la vez con una misma pantalla :S


Título: Re: sintaxis intel y AT&T
Publicado por: Karcrack en 11 Septiembre 2009, 00:46 am
Código:
SetAffinityMask


Título: Re: sintaxis intel y AT&T
Publicado por: Eternal Idol en 11 Septiembre 2009, 11:57 am
SetProcessAffinityMask y SetThreadAffinityMask son funciones de la API de Windows, esto nos demuestra que el scheduler del S.O. es el que se encarga de encauzar la ejecucion de un hilo en un procesador determinado. Ademas el S.O. tiene que inicializar cualquier otro procesador que no sea el principal ... es un tema muy complejo y ligado a la arquitectura del hardware (APIC).


Título: Re: sintaxis intel y AT&T
Publicado por: lapras en 11 Septiembre 2009, 14:56 pm
Gracias por contestar a todos  ;D

Citar
SetProcessAffinityMask y SetThreadAffinityMask son funciones de la API de Windows, esto nos demuestra que el scheduler del S.O. es el que se encarga de encauzar la ejecucion de un hilo en un procesador determinado. Ademas el S.O. tiene que inicializar cualquier otro procesador que no sea el principal ... es un tema muy complejo y ligado a la arquitectura del hardware (APIC).

quieres decir que el propio SO ya usa automaticamente el 2º CPU cuando le da la gana? cada CPU tiene su APIC o es comun? Perdon que haga tantas preguntaas pero es que realmente este tema me interesa mucho y me gustaria aprender por muy complejo que sea ;)


Título: Re: sintaxis intel y AT&T
Publicado por: Eternal Idol en 11 Septiembre 2009, 17:23 pm
Si, todos los que haya siempre que hablemos de un S.O. moderno; no, hay una sola (en la placa madre) y si queres averiguar mas aca tenes donde:
http://en.wikipedia.org/wiki/Intel_APIC_Architecture
http://www.intel.com/products/processor/manuals/index.htm


Título: Re: sintaxis intel y AT&T
Publicado por: lapras en 11 Septiembre 2009, 20:55 pm
muchas gracias ;D eternal idol tu si que eres mi idolo :xD

Entonces los registros acumulador, base, etc... tambien se comparten?
gracias por los links


Título: Re: sintaxis intel y AT&T
Publicado por: Eternal Idol en 11 Septiembre 2009, 21:23 pm
No, cada CPU tiene sus registros.


Título: Re: sintaxis intel y AT&T
Publicado por: lapras en 11 Septiembre 2009, 21:51 pm
vaya que lio me pregunto a la hora de escribir ensablador como se hara refencia a ellos...
mira lo que acabo de encontrar:  http://developer.amd.com/assets/ThrivingandSurvivinginaMulti-CoreWorld.pdf (http://developer.amd.com/assets/ThrivingandSurvivinginaMulti-CoreWorld.pdf)
gracias por responder ;D


Título: Re: sintaxis intel y AT&T
Publicado por: Eternal Idol en 11 Septiembre 2009, 22:21 pm
No se hace referencia ... tu codigo no entiende de la existencia de uno o mas procesadores, el S.O. se encarga de ejecutar cada hilo donde debe dependiendo de la configuracion y en base a los algoritmos que use.


Título: Re: sintaxis intel y AT&T
Publicado por: lapras en 11 Septiembre 2009, 23:58 pm
vaya pues gracias ;D