es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Puntero a función que apunta a una etiqueta de ensamblador

¿Qué está mal en estas declaraciones cuando intento llamar a una etiqueta _exit en un archivo de ensamblador desde una función en C (en otro archivo)? ¡En lugar del comportamiento esperado, obtengo la primera instrucción de _exit tratada como un puntero a función! El compilador es gcc.

typedef void (*exit_f)(void);
extern exit_f _exit;

main() {
...
exit_f exit = (exit_f)_exit;
...
exit();
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    No hay problemas aparentes con el código compartido. Sin embargo, el problema podría estar relacionado con la etiquetación de _exit en el archivo de ensamblado. Si _exit no está etiquetado correctamente, entonces la primera instrucción de _exit podría ser tratada como un puntero de función en lugar de una etiqueta. Además, si el archivo de ensamblado no está enlazado correctamente con el archivo C, es posible que el compilador no pueda encontrar la etiqueta _exit, lo que provocaría un comportamiento inesperado.

Comments are closed.