Estoy escribiendo un código en lenguaje ensamblador 6502 usando cc65.
Debido a que vivo en 2022 y no en 1979 y tengo acceso a una máquina de desarrollo que es un millón de veces más poderosa que la plataforma de destino, estoy escribiendo pruebas unitarias para el código de lenguaje ensamblador en C.
Obviamente, las convenciones de llamada para C y el lenguaje ensamblador son diferentes, por lo que tengo un montón de funciones contenedoras que aceptan argumentos de estilo C y luego llaman a las funciones del lenguaje ensamblador.
Pero después de llamar a una función de lenguaje ensamblador, quiero verificar el estado de varios globales que están definidos en lenguaje ensamblador, pero no puedo porque C espera que todos los identificadores comiencen con un guión bajo '_' y los identificadores en mis módulos de lenguaje ensamblador no.
Podría exportar cada símbolo dos veces, una vez con un prefijo '_' y otra sin él, pero parece tan torpe y me pregunto si hay una manera más fácil. ¿Hay un #pragma o algo que pueda usar para decirle a C que use el nombre del símbolo exactamente como está, sin agregar un guión bajo?
Busqué en los documentos de cc65 y no encontré nada, pero parece una necesidad bastante común, y me pregunto qué hacen otras personas.
Es probable que el compilador cc65 solo admita el acceso a símbolos con la decoración específica de ABI, es decir, aquellos que comienzan con un guión bajo _ .
Para acceder a otros símbolos, se les debe cambiar el nombre para seguir la decoración o se debe crear un alias decorado.
_foo EQU fooPara funciones, también vale la pena considerar escribir funciones contenedoras. Esto puede mejorar la capacidad de depurar el código, ya que los depuradores tienden a confundirse cuando dos símbolos se refieren a la misma dirección.