У меня вопрос: как программно создать объектный или даже сразу исполняемый файл?
Т е, допустим, у меня есть язык программирования свой, и я хочу, чтобы он был компилируемым.
К интерпретируемым и байт-кодным языкам у меня нет вопросов, поскольку в обоих случаях задействуется некий интерпретатор, а не сама ОС. Т е я могу запросто описать синтаксис, правила считывания байт-кода, и т д. Сам формат исполняемого файла и его исполнение находится под моим контролем, я могу этим управлять, я могу это понимать.
А вот как создать (программно) исполняемый файл ELF/PE/COFF - я не знаю.
Конечно, кто-то скажет про LLVM. Но, тут возникает вопрос: а ведь как-то и сам LLVM транслирует LLVM-IR в исполняемый файл. Тот же GCC, компиляторы ассемблера (GNU AS, NASM, YASM и т д) вообще обходятся без этого вашего LLVM. Как? Как устроена компиляция в "нативный" код, понятный самой операционной системе?