Pregunta

He visto este término en el compilador de Lisp y Python fuentes de algunos de engarce C.

Mi suposición es que una solución en marcha es sólo un envoltorio alrededor de una rutina de Asamblea que se asegura la alineación es correcta, pero no estoy seguro en absoluto acerca de cualquier cosa aquí.

¿Fue útil?

Solución

A "fixup" es un término enlazador. Hay una muy buena discusión de aquí:

http://www.microsoft.com/msj/0797/hood0797.aspx

Cada vez que un archivo de objeto (.o, obj) se refiere a un símbolo externo que será el código de marcador de posición de salida como "Ponga la dirección 0 para registrar 5" y una nota que dice "Rellene que 0 con la dirección real del símbolo ' foo '". Algún otro archivo de objeto definirá 'foo', el enlazador A continuación, volver atrás y "arreglar" el 0 es la dirección correcta.

Por cierto, si nadie define 'foo' se obtiene que del 50 retro mensaje de error estilo blithering algo así como 'no puede encontrar referencia a _foo' o incluso menos comprensible si estás usando C ++.

Y muy rara vez se obtendrá un "error de corrección" cuando la dirección de 'foo' no encaja en el que el enlazador quiere ponerlo. Generalmente esto viene de una corrección que requiere un desplazamiento relativo que es demasiado grande.

Otros consejos

enlazador y Cargadores es un recurso entintador interesante que explica un montón de jerga, e incluye las CPU x86 no aquí y allí también:

http://www.iecc.com/linker/

del moderador comp.compilers.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top