Resolución de Sudoku en ensamblador AArch64 para macOS

Fuentes: Sudoku Solver in AArch64 Assembly for macOS

Este artículo técnico detalla la implementación de un resolutor de Sudoku en ensamblador AArch64 para macOS, un proyecto que forma parte de la serie 'Simple Sudoku Solvers'. A diferencia de los asistentes de pruebas que verifican la corrección del código, esta versión opera sin validaciones, permitiendo al programador interactuar directamente con la máquina. El código, que ocupa menos de 200 líneas, se basa en la estructura de datos plana de 81 bytes utilizada en ediciones anteriores, almacenada en la sección de datos del ejecutable.

La implementación aprovecha las instrucciones nativas de la CPU para optimizar el proceso. En lugar de bucles iterativos para contar bits, se utiliza la unidad vectorial de AArch64 con instrucciones como 'cnt' y 'addv', reduciendo la complejidad del código. El resolutor utiliza la pila de la máquina para el backtracking, eliminando la necesidad de gestores de memoria o recolectores de basura. El algoritmo identifica la celda con menos candidatos, cuenta sus posibilidades mediante operaciones vectoriales y propaga las restricciones. Si la propagación no resuelve el tablero, el sistema falla. Este enfoque ofrece una visión clara de cómo la CPU ejecuta lógicas de búsqueda y manipulación de memoria sin abstracciones de alto nivel, sirviendo como referencia para entender el bajo nivel de programación en sistemas modernos.