Cómo escribir un linker
compiler-construction interpreter (3)
He escrito un compilador para C que genera código de bytes. La razón de esto fue poder escribir aplicaciones para una plataforma integrada que se ejecuta en múltiples plataformas.
Tengo el compilador y el ensamblador.
Necesito escribir un linker, y estoy atascado.
El formato de objeto es uno personalizado, diseñado alrededor del intérprete de código de bytes, así que no puedo usar realmente ningún vinculador existente.
Mi mayor obstáculo es cómo organizar el código objeto para generar el binario vinculado. El enlace dinámico no es necesario, en este momento. Necesito que la vinculación estática funcione primero.
Sigo el libro de Linkers and Loaders. Usted declara que su formato de objeto es personalizado. Si el formato está bajo su control, podría considerar usar el formato ELF con su bytecode como una nueva arquitectura de máquina, a la x86, SPARC, ARM, etc. Las fuentes de binutils de GNU son lo suficientemente maleables para permitirle incorporar su "arquitectura" .
http://linker.iecc.com es el único libro que conozco sobre este tema.
Ian Lance Taylor, uno de los principales desarrolladores en el vinculador de oro (ahora parte de binutils), publicó una serie de blogs sobre cómo funcionan los vinculadores. Puedes encontrarlo aquí .