Aprendiendo a programar en la Asamblea - Recursos útiles [cerrado]
10
Siguiendo un hilo anterior, me ha interesado aprender un poco sobre la programación de la Asamblea. No tanto por querer programar aplicaciones útiles, solo por tener una idea de la programación de bajo nivel para comprender mejor lo que está sucediendo.
¿Alguien puede recomendar libros o recursos en línea para principiantes?
También me gustó este sitio . Buena introducción a la programación de montaje! Usé este sitio como referencia mientras estudiaba para mi curso de Microprocesadores y Microcontroladores.
Excelente, gracias. Fuera de interés, ¿qué tan intuitivo le resultó aprenderlo en comparación con un lenguaje moderno típico? Mi historia es de 6 meses c # (en la industria) y casi al mismo tiempo C ++ (en mi habitación :))
Darren Young
1
Me encontré con la programación de la Asamblea en mi curso (todavía soy un estudiante) y, como dijiste en tu pregunta, fue útil saber cómo funcionan los sistemas integrados y todo. Sin embargo, en comparación con los idiomas de alto nivel (modernos como usted dice), no me pareció muy útil. Ya sabes, nunca lo usaré en mi campo: desarrollo web. :)
ykombinator
2
¿Es este un ejercicio académico o tiene la intención de utilizar el lenguaje ensamblador que aprende? Esto es algo bastante especializado, en estos días. La optimización del compilador se ha vuelto tan buena que incluso algo así como una unidad de disco duro de alto rendimiento normalmente tendría alrededor del 1% de su código base escrito en ensamblador. Al descender por la cadena alimentaria a procesadores de 4 bits o de 8 bits, verá que se usa mucho más lenguaje ensamblador.
Si realmente quieres probar el lenguaje ensamblador, elige un procesador que tenga un buen conjunto de instrucciones. Soy un ex empleado de ARM, por lo que probablemente soy parcial, pero descubrí que el conjunto de instrucciones ARM era particularmente fácil de aprender: pude escribir un filtro FIR eficiente en mi tercer día en la empresa. Los socios de semiconductores de ARM están enviando alrededor de mil millones de núcleos ARM por trimestre en estos días, por lo que es bastante fácil encontrar una empresa que esté dispuesta a usar su experiencia ARM ASM.
Hay muchas placas de evaluación ARM disponibles por alrededor de $ 50 para probar su código; parece que ARM Cortex M3 será inmensamente popular. Utiliza el conjunto de instrucciones Thumb2 de ARM, que es un poco más oscuro que el simple código ARM32, pero aún así es bastante fácil y muy potente.
Es puramente académico / autoaprendizaje. Me gustaría comprender mejor la gestión de memoria de bajo nivel, así como los idiomas de nivel superior.
Darren Young
1
Básicamente, en el sentido de la programación de ensamblaje, primero debe conocer la arquitectura subyacente, luego el lenguaje correspondiente, por ejemplo, con los microcontroladores PIC, puede usar el compilador que proporciona y el idioma. Uso este sitio para hacer referencia a tutoriales de microcontroladores PIC.
Siempre encontré que la parte más difícil era hello world, que generalmente es solo una función de ensamblaje trivial llamada desde un lenguaje de nivel superior como sumar dos números. Una vez que superas ese obstáculo, es simplemente una cuestión de agregar instrucciones y psuedo-ops (como definir datos) a tu repertorio.
Me gustaría segundo geekbrit, aunque nunca he usado ARM. Una arquitectura mínima como esa no solo sería más fácil, sino que podría estar más cerca de tener un propósito legítimo, en lugar de solo un propósito didáctico.
Tengo un conjunto de instrucciones, ensamblador y simulador, con algunas lecciones que se crearon solo para este propósito. Todavía no tengo comentarios sobre lo bueno o malo que lo hice, pero está ahí, dale 15 minutos o media hora para ver si te enseña algo. http://github.com/dwelch67/lsasim Después de eso tengo algunos simuladores de conjunto de instrucciones convencionales que puedes probar también, simples, sin lujos, deben ejecutarse en cualquier lugar donde tengas un compilador de C, etc.
Respuestas:
Libro recomendado: El arte de la programación en lenguaje ensamblador .
También me gustó este sitio . Buena introducción a la programación de montaje! Usé este sitio como referencia mientras estudiaba para mi curso de Microprocesadores y Microcontroladores.
fuente
¿Es este un ejercicio académico o tiene la intención de utilizar el lenguaje ensamblador que aprende? Esto es algo bastante especializado, en estos días. La optimización del compilador se ha vuelto tan buena que incluso algo así como una unidad de disco duro de alto rendimiento normalmente tendría alrededor del 1% de su código base escrito en ensamblador. Al descender por la cadena alimentaria a procesadores de 4 bits o de 8 bits, verá que se usa mucho más lenguaje ensamblador.
Si realmente quieres probar el lenguaje ensamblador, elige un procesador que tenga un buen conjunto de instrucciones. Soy un ex empleado de ARM, por lo que probablemente soy parcial, pero descubrí que el conjunto de instrucciones ARM era particularmente fácil de aprender: pude escribir un filtro FIR eficiente en mi tercer día en la empresa. Los socios de semiconductores de ARM están enviando alrededor de mil millones de núcleos ARM por trimestre en estos días, por lo que es bastante fácil encontrar una empresa que esté dispuesta a usar su experiencia ARM ASM.
Hay muchas placas de evaluación ARM disponibles por alrededor de $ 50 para probar su código; parece que ARM Cortex M3 será inmensamente popular. Utiliza el conjunto de instrucciones Thumb2 de ARM, que es un poco más oscuro que el simple código ARM32, pero aún así es bastante fácil y muy potente.
Este pequeño tablero se ve muy bien, por 80 euros: http://www.olimex.com/dev/stm32-103stk.html
fuente
Básicamente, en el sentido de la programación de ensamblaje, primero debe conocer la arquitectura subyacente, luego el lenguaje correspondiente, por ejemplo, con los microcontroladores PIC, puede usar el compilador que proporciona y el idioma. Uso este sitio para hacer referencia a tutoriales de microcontroladores PIC.
fuente
Siempre encontré que la parte más difícil era hello world, que generalmente es solo una función de ensamblaje trivial llamada desde un lenguaje de nivel superior como sumar dos números. Una vez que superas ese obstáculo, es simplemente una cuestión de agregar instrucciones y psuedo-ops (como definir datos) a tu repertorio.
Me gustaría segundo geekbrit, aunque nunca he usado ARM. Una arquitectura mínima como esa no solo sería más fácil, sino que podría estar más cerca de tener un propósito legítimo, en lugar de solo un propósito didáctico.
fuente
Tengo un conjunto de instrucciones, ensamblador y simulador, con algunas lecciones que se crearon solo para este propósito. Todavía no tengo comentarios sobre lo bueno o malo que lo hice, pero está ahí, dale 15 minutos o media hora para ver si te enseña algo. http://github.com/dwelch67/lsasim Después de eso tengo algunos simuladores de conjunto de instrucciones convencionales que puedes probar también, simples, sin lujos, deben ejecutarse en cualquier lugar donde tengas un compilador de C, etc.
fuente