Elaborado por: Mendoza Suárez Ivan Gustavo
Bienvenido al repositorio oficial de 50 Ejercicios en ARM64 Assembly, donde se abordan diversas problemáticas de programación mediante la escritura de código en ensamblador para la arquitectura ARM64. Este repositorio está diseñado para aquellos interesados en mejorar sus habilidades en programación a bajo nivel, optimización de código, y comprensión de la arquitectura ARM64, utilizada en procesadores modernos como los de Raspberry Pi 5 y otros dispositivos basados en ARM.
Cada ejercicio en este repositorio ha sido cuidadosamente seleccionado para abarcar conceptos clave de programación en ensamblador, tales como:
- Manejo de registros.
- Operaciones aritméticas y lógicas.
- Control de flujo (bucles, condicionales).
- Manipulación de memoria y punteros.
- Llamadas al sistema y manejo de entrada/salida.
- Optimización a nivel de ensamblador.
Este repositorio contiene 50 ejercicios, divididos en categorías específicas, para facilitar el aprendizaje y la organización. Cada ejercicio incluye:
- Descripción del problema: Una breve explicación del objetivo de cada ejercicio.
- Código en ARM64 Assembly: Una solución en ensamblador que se puede ensamblar y ejecutar en un entorno ARM64.
- Comentarios explicativos: Cada parte del código está comentada para ayudar a entender el flujo y la lógica de la solución.
- Instrucciones para compilar y ejecutar: Pasos detallados para compilar y ejecutar cada programa en un sistema ARM64 (como una Raspberry Pi 5 con Raspbian OS 64-bit).
Este repositorio ha sido creado y probado en un entorno Raspberry Pi 5 con Raspbian OS 64-bit utilizando las herramientas de GNU:
- Ensamblador:
as(GNU Assembler) - Enlazador:
ld(GNU Linker) - Depurador:
gdbcon la extensión GEF (GDB Enhanced Features)
Para compilar y ejecutar los ejemplos de este repositorio, necesitarás tener instaladas estas herramientas.
Si deseas contribuir al proyecto, puedes hacerlo de varias maneras:
- Solucionando ejercicios pendientes.
- Mejorando o optimizando soluciones ya existentes.
- Reportando errores o proponiendo mejoras.
Cualquier contribución es bienvenida, ya sea creando un pull request o abriendo un issue para discutir nuevas ideas:)