Domanda

Ho visto questo termine nel compilatore Python Lisp e le fonti un po 'C del linker.

La mia ipotesi è che un fix-up è solo alcuni wrapper per una routine di Assemblea che consente di verificare l'allineamento è giusto, ma non sono sicuro affatto di nulla qui.

È stato utile?

Soluzione

Una "correzione" è un termine linker. C'è una buona discussione di esso qui:

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

Ogni volta che un file oggetto (.o, obj) si riferisce a qualche simbolo esterno sarà uscita codice segnaposto come "Put indirizzo 0 per registrare 5" e una nota che dice "Compila il che 0 con l'indirizzo effettivo del simbolo ' foo '". Qualche altro file oggetto definirà 'foo', il linker poi tornare indietro e "sistemare" il 0 di essere l'indirizzo corretto.

Per inciso, se nessuno definisce 'foo' si ottiene che il messaggio di errore stile retrò anni 50 blithering qualcosa come 'non riesce a trovare riferimento alla _foo' o anche meno comprensibile se si sta utilizzando C ++.

E ben di rado si otterrà un "errore di correzione" quando l'indirizzo di 'foo' non si adatta in cui il linker vuole metterlo. In genere questo viene da una correzione che richiede un parente di offset che è troppo grande.

Altri suggerimenti

Linker e Pale è una risorsa inchiostratore interessante che spiega un sacco di gergo, e comprende le CPU x86 non qua e là anche:

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

dal moderatore comp.compilers.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top