1 comentarios

 
GN⁺ 2024-04-23
Opinión de Hacker News

Si se resumen las diversas opiniones en los comentarios de Hacker News sobre cómo aprender lenguaje ensamblador, serían las siguientes:

  • Para aprender de forma intuitiva los fundamentos de ensamblador ARM, ayuda probar el juego en línea "OFRAK Tetris". Los bloques son instrucciones de ensamblador ARM, y mientras juegas puedes aprender rápidamente a leer desensamblados.
  • Con solo una referencia de instrucciones x86, se puede aprender compilando expresiones simples con la sintaxis del ensamblador en línea del compilador D y analizando el ensamblador generado.
  • También es buena idea consultar libros como "Computer Architecture: A Quantitative Approach", "Getting Started with LLVM Core Libraries" y "The Architecture of Open Source Applications", además de la documentación, tutoriales y referencias oficiales de LLVM.
  • Leer guías de optimización o manuales de arquitectura proporcionados por fabricantes de CPU, como "Apple Silicon CPU Optimization Guide" de Apple o los "Software Developer Manuals" de Intel, también ayuda.
  • Otra buena forma es poner programas pequeños en Ghidra o Godbolt y observar qué ensamblador se genera. Hay que entender que el código que produce el compilador suele ser bueno más por los pases de optimización que por la selección de instrucciones.
  • Primero es importante leer el manual de una arquitectura específica, como PowerPC, x86 o ARM, y luego compilar pequeños programas en C para analizar el desensamblado y entender la relación entre el código y las instrucciones.
  • También conviene consultar "Introduction to 64 Bit Assembly Programming for Linux and OS X" o documentos de arquitectura de ARMv7, ARMv8, RISC-V y x86. Analizar código de ejemplo en RosettaCode o GitHub también ayuda.
  • También puede ser una forma divertida usar el juego "Turing Complete" para crear directamente una ISA y resolver rompecabezas con ensamblador.
  • Empezar con un tutorial de NASM y luego consultar los manuales de Intel también es recomendable.
  • También se recomienda repasar ensamblador y compiladores con el proyecto "Nand2Tetris".