I'm coding a compiler that consists of four separate programs: the preprocessor, the to-assembly compiler, the assembler (NASM) and the linker (ld).
When writing about it, I have some issues expressing the exact part of the compiler I'm referring to; i.e., when I just type "the compiler", it could mean either the whole program chain that is invoked by a single command (like GCC), or the actual compiler that converts a translation unit into NASM.
What is the correct terminology here? Should I refer to the inner ("true") compiler as "translator" or something else?
I would say that, rather than looking for "correct" terminology (subjective at best), you should instead aim for consistent terminology and explain early on what the terms means.
For example, call the entire thing a toolchain and each component of it something more specific:
The xyzzy toolchain contained in this package consists of four components:
- the preprocessor;
- the compiler;
- the assembler; and
- the linker.