12

Ho scritto un compilatore per C che emette codice byte. Il motivo per questo era di essere in grado di scrivere applicazioni per una piattaforma embedded che funziona su più piattaforme.Come scrivere un linker

Ho il compilatore e l'assemblatore.

Ho bisogno di scrivere un linker e sono bloccato.

Il formato dell'oggetto è personalizzato, progettato attorno all'interprete del codice byte, quindi non posso utilizzare alcun linker esistente.

Il mio ostacolo maggiore è come organizzare il codice oggetto per generare il file binario collegato. Il collegamento dinamico non è necessario, al momento. Ho bisogno di far funzionare prima il collegamento statico.

risposta

4

I secondo il libro Linkers and Loaders. Si afferma che il formato dell'oggetto è personalizzato. Se il formato è sotto il tuo controllo, potresti considerare l'utilizzo del formato ELF con il tuo bytecode come una nuova architettura della macchina, la x86, SPARC, ARM, ecc. Le fonti binutils di GNU sono sufficientemente malleabili per permetterti di incorporare la tua "architettura" .

12

Ian Lance Taylor, uno dei principali sviluppatori sul linker oro (ora parte di binutils), ha pubblicato una serie di blog su come funzionano i linker. Lo puoi trovare here.