I have many docs about compilers but it's not that easy to understand without a working compiler, your problem is the linker e.g. ld.exe that converts binary ASM to an executable so you see the linker does everything and it's a part of GNU tools written in C if i'm not mistaking.