用java是可以写bai语言编译器的,用任何du语言工具写都可以。 各语言开发zhi工具间只有开发效率的差dao异,没有可行不可行的区别。
编译器其实就是一个翻译工具,它可以把代码直接翻译成二进制文件交给CPU执行(二进制指令就是CPU的指令集,当然可以直接操作内存),当然,这个二进制文件需要符合操作系统的可执行文件的格式(PE格式或ELF格式)才能执行。
1、编译器就是把c语言程序翻译为一种叫做目标文件的中间表示形式,然后交给汇编器,翻译为汇编程序,而汇编执行直接对应二进制机器码,链接之后就可以变成可执行文件了。
而用java实现的编译器完全可以代替gcc工具集合中的编译器,生成相同的目标文件的中间表示形式,在交给gcc汇编器,连接器等处理。
2、编译器就是一种把文本(源码)按语言语义的规则翻译成字节码的一套程序。
C通常不像Java跨平台,确定目标平台是什么,比如是x86、ARMS、MIPS、JVM,操作系统环境是什么,然后编写输出生成所在环境下能运行的字节码。
用任何语言工具写都可以。 各语言开发工具间只有开发效率的差异,没有可行不可行的区别。
3、如果真的存在这么一个用Java写的编译器,那么这个编译器需要能够理解C语言语法,并根据这些语法生成对应的字节数组(即汇编指令,这些汇编指令和C编译器生成的汇编指令相同)。如果这个字节数组还满足可执行文件的格式(在Windows中为PE格式,在Linux中为ELF格式),那么这堆字节数组组成的文件就可以在对应的操作系统下执行。