I am currently designing and developing a programming language from scratch. Mostly as a learning experience. Although it's not entirely related to the question, it's important that you know a little bit of the backstory.
I have a fairly good idea as to how I'll turn the code from my language into the target assembly code, but there is a slight problem: which assemblers does one normally use when developing and creating a programming language (as for code generation)?
For Windows, I could theoretically compile my language into the MASM syntax, but then that wouldn't be available on all target Windows machines using my programming language. And I believe (don't take my word for it) I read somewhere that you're not allowed to bundle it up with your own software and redistribute it.
I suppose one could use NASM, as that would work on Linux and has the potential of working on Windows as well. But I feel as though there has to be another way. Surely people haven't relied on standalone software to compile their programs in the past?
Is there some architecture specific assembler bundled up with the operating system you are on, or do you need to rely on such aforementioned software?
I'm sure one could just compile down to ones and zeroes with no intermediate assembly language step, but that sounds a slight bit tedious, don't you think? ;-)