Is it better for a compiler to compile code to assembly language, or output binary machine code directly?
Advantages of assembly language that I can think of off the top of my head: avoiding the need to learn the object file format, ease of debugging the backend.
Advantage of binary: faster compile speed. How significant is this? Assuming the Gnu assembler is used (apart from anything else, it's what can reasonably be assumed to be available on most machines), does it take a significant amount of time to assemble, say, a million lines of code?
Are there any differences in object file formats between various operating systems that the assembler would hide?
Are there any other advantages on either side that I haven't thought of?