Has elegido FASM, que fue una buena elección. También puede tomar NASM, que es el ensamblador más utilizado. La fortaleza de FASM está especialmente en el lado de la programación de Windows, porque es bueno para admitir las llamadas de la biblioteca de Windows y eso.
FASM es desarrollado por un individuo, pero es más estricto debido al tamaño del código y más rápido, pero carece de algunas de las características de NASM, si no estamos hablando de características especiales de Windows.
Todavía puedes elegir usar el Gnu-Assembler (gas), pero no lo recomendaría, porque carece de algunas características vitales y tuve que dejarlo por mi cuenta debido a eso. No se trata tanto de ATT vs INTEL, incluso si eso podría ser un problema, sino de un solo pase para el gas.
Después de que hayas elegido tu cadena de herramientas, que estaría en Linux gdb, objdump, x86dis y radare2, por ejemplo, comienzas a leer un buen libro sobre eso.
- Cómo comenzar a aprender un cuerpo de conocimiento, sin las ventajas de ir a clases
- ¿Es el idioma finlandés fácil de aprender?
- ¿Qué hace que los niños aprendan mejor idiomas e instrumentos musicales?
- Había completado mis lecciones de principiante en música de teclado por mi cuenta, ¿qué puedo hacer a continuación para seguir aprendiendo y mejorar mis habilidades por mi cuenta?
- ¿Copiar es una buena manera de empezar?
Comencé con “El arte de la programación de ensamblajes”, que puedes descargar gratis en algún lugar de Internet. Tenga cuidado de obtener la versión original y no solo la versión HLA de ese libro. Lleva el mismo nombre, pero es algo completamente diferente.
El código en ese libro es antiguo, porque se trata principalmente de la programación de DOS. Pero no debes preocuparte por eso. Muchos de los principios que se muestran allí todavía son correctos y no he visto un libro sobre ensamblaje que esté tocando tantas partes como aquél.
Debe aprender los códigos de operación y las instrucciones de x86_64, cómo trabajar con él y qué tan rápido y lento son algunos de los comandos. Algo bueno: la mayoría de las instrucciones se ejecutan solo dentro de un ciclo en la x64 moderna, solo algunas de ellas deben evitarse. Como ENTER, solo como un ejemplo.
La especificación de AMD que obtendrás de AMD te ayudará allí. Especialmente el tercer libro es una valiosa referencia.
Luego visite la página Agner Fog, donde encontrará una colección sobre los tiempos de ejecución de las instrucciones de varias generaciones de procesadores y muchos más.
Comience a resolver problemas simples primero. Comience con un Hello World, vaya a GCD, vea cómo puede incluir sus argumentos en la línea de comandos, verifique cómo incluir su archivo de objeto en su código C mediante la vinculación, cree un Makefile funcional.
Pruebe algunos de los comandos SIMD de 64 bits que solo están documentados de forma escasa en los tutoriales. Tienes que hacerlo tú mismo.
Aquí hay algunos recursos más: recursos de lenguaje ensamblador. Realmente, ¿qué tan difícil puede ser?
Pero no se trata de leer, se trata de escribir. Escribir código. Escriba el código todo el día, intente resolver pequeños problemas, intente hacer su propio pequeño código de shell y aprenda por qué y cómo se puede hacer el código relativo de posición.
Y realmente: hacer muchos algoritmos. Haga un poco de recursión, pero más enfoque en hacer algoritmos recursivos de una manera iterativa. Como Hanoi, como permutaciones y eso. Y mientras que hoy en día casi nunca hace solo la Asamblea, solo realiza rutinas críticas en la Asamblea, debe concentrarse en trabajar en conjunto con C. O cree su propia biblioteca de enlaces dinámicos, que se puede vincular desde C y en todas partes.
Para que sus rutinas no solo sean buenas para usted sino también para el beneficio de todos. Existe la necesidad de un buen código de ensamblaje en crecimiento. Los procesadores se están ralentizando en su Ley de Moore, por lo que si queremos ir más allá, tenemos que paralelizar nuestro código y usar todos los recursos que tenemos en nuestra arquitectura, lo que significa que cada ciclo cuenta.
Esto es más o menos la muerte de los lenguajes lentos, por lo que puedo ver. Todas esas visualizaciones morirán ahora y serán reemplazadas por un código eficiente.
Si algunos programas en las grandes empresas aumentan su velocidad en solo un 1%, se convierten en millones de dólares en gastos de electricidad y hardware. Pero con Assembly no estamos hablando de un pequeño porcentaje. Estamos hablando de factores y, a veces, incluso de grados de magnitud. Nuestra arquitectura no cambiará por un tiempo, la arquitectura x64 es más o menos lo que tendremos por mucho tiempo a partir de ahora.
Solo imagina cómo sería Twitter si no se programara en un lenguaje sucio e inconformista como Ruby, sería como unos grados de magnitud más rápido. Es increíble cómo alguien puede desperdiciar todo un centro de datos en unos 160 bytes que pasan. Eso es increíble, eso es algo que un solo servidor con suficiente memoria debería hacer solo: en Ensamblado. Y no es un centro de datos de mierda.
Mucho que hacer. Vamos a romperlos, vamos a hacerlo!
Que te diviertas.
_addload(function(){_setupIW(‘com’);_csi(‘en’,’es’,’http://vvads.com/billy/which-is-the-best-way-to-learn-assembly-language/’);});