Hay muchos libros en asamblea. Sin embargo, generalmente tratan con ISA que no me importan, como MIPS o ARM. No trato con estas arquitecturas; no hay razón para que trate de aprenderlos.
Pero los libros de ensamblaje x86 parecen ... inexistentes.
Digamos, por ejemplo, que estoy tratando de construir un compilador de juguetes que genere archivos ejecutables portátiles de Windows.
¿Existe algún libro que sea el estándar de facto para describir las mejores prácticas, las metodologías de diseño y otra información útil sobre el ensamblaje x86? ¿Qué hay de ese libro que lo hace especial?
Respuestas:
Utilicé el lenguaje ensamblador para procesadores x86 como libro de texto cuando estaba en la universidad y me resultó muy fácil de entender. Tengo la cuarta edición más antigua y la comparé con la sexta edición y no noté muchos cambios, por lo que probablemente podría comprar una copia más antigua barata. La gente se queja del uso de su propia biblioteca para E / S, pero él le dice cómo hacerlo de la manera "difícil" en los últimos capítulos.
fuente
El lugar obvio para ir es el sitio web de Intel, donde puede encontrar manuales de programación y referencia para descargar que contienen todo lo que hay que saber sobre la arquitectura x86.
Aquí: Intel® 64 e IA-32 Architectures Software Manuales del desarrollador
fuente
La programación de Art of Assembly es un excelente recurso que tiene bastante información sobre la programación x86.
La documentación de x64 ABI también es útil. Estaba tratando de encontrar un enlace a la versión que estaba en el sitio web de AMD, pero parece que ya no puedo encontrarlo, así que supongo que este tendrá que funcionar.
Algo que puede ayudar bastante [un poco] mientras se aprende es, en lugar de intentar escribir una aplicación completa desde cero en el ensamblaje, en su lugar, escribir la mayor parte en C (o en cualquier otro lenguaje compilado realmente) y luego llamar a un fragmento de código de ensamblaje desde ese. Una vez que haya hecho eso, inviértalo, escriba un programa de ensamblaje y llame a algunas funciones de C a partir de eso.
Editar: se corrigió un error tipográfico.
fuente
Un muy buen libro para aprender x86 Assembly es Pentium Processor Optimization Tools . Si bien el enfoque principal del libro es la optimización del código de ensamblaje, enseña el ensamblaje Pentium en el camino, y también es un buen libro de referencia.
Está agotado desde hace mucho tiempo, pero no es difícil de encontrar usado.
Viene con un disquete que contiene un "optimizador de código de ensamblaje". En realidad, no optimiza su código, sino que produce una lista comentada que señala dónde se encuentran las ineficiencias, como las paradas de canalización.
La herramienta que viene con un libro es una versión limitada de un producto más funcional que la compañía del autor solía vender, pero por razones que no conozco, hace mucho que no están en el negocio. No sé por qué, creo que tal herramienta se vendería como hotcakes.
x86 en general es un tema muy complejo ya que hay muchas variantes que son compatibles con diferentes modelos de microprocesadores. Una vez que conozca los conceptos básicos, querrá consultar los libros de datos de Intel o AMD para conocer el chip preciso al que se dirige. Lamentablemente, el código que se ejecuta rápidamente en un modelo de CPU puede no ser tan rápido en un chip diferente.
fuente
¿Por qué no probar el wikilibro - http://en.wikibooks.org/wiki/X86_Assembly . Da un buen comienzo introductorio al lenguaje ensamblador.
Lo difícil del ensamblaje es darse cuenta de lo simple que es y de que debe permanecer con esa simplicidad.
fuente