1. Program that reads some input (e.g., C language) and generates asm and/or opcodes.
2. Program that reads asm and/or opcodes and generates binary numbers ("object files").
No. 1 is what I need.
No. 2 is what I call an "assembler". Although terminology means less to me than what a program actually does.
2. is also what I learned as "assembler": a program which takes ASCII source code (written in a language we call assembler), and assembles that source code directly into a binary executable (no linking).
So, back in the day (and still for me, always):
assembler: ASCII source code in assembler language -- "which language did you code that in? - Assembler."
assembler: the integrated development environment (such as ASM-One) which produces executable machine code straight from source, with no linking step in-between; also known as a two-pass optimizing assembler.
No. 1 is a program that accepts input (e.g., RTL, MINIMAL, etc.) and generates asm.
I like to call this an asm code generator. Because today when people say "compiler" they are often referring to a collection of programs, some of which do not generate asm.
Yeah. I'm sorry about the terminology. I guess I just like the term "code generator".
When I use that term I envision simple filters that take ASCII input, maybe even some sort of "template", and transform it into some other format that's useful. Ideally, asm. But not always.
For example, in GCC, for x86, there's a couple of programs that operate on i386-opc.tbl and i386-reg.tbl. I would not call them "code generators" but I suspect they are needed in order for "gcc -s" to work.