Errores en ensamblador Go: Conflictos con el puntero de marco en dos casos

2025-01-04

Esta publicación analiza dos fallos en Go que provienen de un código ensamblador con errores que dañó el puntero de marco. Un error sobrescribió el registro del puntero de marco (BP en AMD64) en la biblioteca go-metro, el otro guardó incorrectamente el puntero de marco en la pila en el ensamblador ARM64 de Apache Arrow. El autor recomienda usar generadores de ensamblador como Avo para evitar la manipulación manual de registros y pila. El artículo profundiza en las ABI y las convenciones de llamada, ofreciendo información sobre cómo prevenir problemas similares, destacando la importancia de comprender y seguir las pautas de ensamblador de Go.