这种事情从理论层面来说:不一定要与汇编语言有什么瓜葛。你完全可以让你的编译器直接编译成机器码。大部分C/C++编译器(不是所有的)之所以先编译成汇编语言,是为了解构。从C到汇编的“翻译”相对容易(都算是抽象语言,有语义的),同时汇编语言的编译器效率很高,可以生成质量非常高的机器码。所以两者结合,可以突出各自的优势,减少复杂度。
但是如果有必要,当然也可以直接编写产生机器码的编译器,实际上Java/C#这样的半编译语言和Js这样的脚本语言,都没有先转换成汇编的这一步。前者是因为强大的虚拟机技术,直接把字节码转换成机器码执行了,后者是灵活的解释器,实时把代码转换成机器码执行,而完全没有“编译”这一步(当然如果深究的话,出于性能考虑,很多高性能的解释器也会提前“预编译”一部分代码,但这是具体实现,不是宏观概念)。
除了编译为汇编语言,你的编译器还可以把目标编码编译为C语言,以前IBM INFORMIX的C4GL就是这么搞的。
你说的转译指什么? 只有机器指令可以直在CPU上接执行,编程语言最终也是转成CPU可识别的二进制文件。
写编译器用高级语言就行了,不用非要用汇编语言
你编译的结果,是什么语言?