如何用c编写编程语言和头文件 语言是C或C++头文件写的。另一个大疑点是,因为计算机只理解二进制,人们如何编写程序语言和计算机能真正理解的编译器?< /P> < P> C和C++头文件分别被写为C和C++源代码。这些[1]中的代码被编译并链接到可执行文件中 编译器是用任意的语言编写的,现在,你通常会把现有的C或C++编译器用于某个可用的平台,但是很久以前,这个过程基本上是在汇编程序中编写一个非常基本的编译器[或者其他一些可用的和合适的语言],然后用它引导到更高级的语言编译器中

如何用c编写编程语言和头文件 语言是C或C++头文件写的。另一个大疑点是,因为计算机只理解二进制,人们如何编写程序语言和计算机能真正理解的编译器?< /P> < P> C和C++头文件分别被写为C和C++源代码。这些[1]中的代码被编译并链接到可执行文件中 编译器是用任意的语言编写的,现在,你通常会把现有的C或C++编译器用于某个可用的平台,但是很久以前,这个过程基本上是在汇编程序中编写一个非常基本的编译器[或者其他一些可用的和合适的语言],然后用它引导到更高级的语言编译器中,c++,c,C++,C,当然,如果你刚刚发明了“ChipX”,而没有便携式汇编程序,你也必须编写汇编程序。希望你有一些其他的计算机与编程语言-但如果我们假装没有计算机可用,那么我们将不得不拿出二进制代码“手”,然后输入到计算机的ROM。该代码可能能够执行一些非常简单的任务,例如向某个输出设备打印“Hello”。一旦成功了,我们将扩展它以拥有一个加载程序,这样我们就可以加载一个二进制文件(或者以其他方式添加新命令)。一个非常简单的编辑器来编辑文件,一个文件存储将是非常有用的。然后我们可以开始编写一些代码,可以读取人类可读

当然,如果你刚刚发明了“ChipX”,而没有便携式汇编程序,你也必须编写汇编程序。希望你有一些其他的计算机与编程语言-但如果我们假装没有计算机可用,那么我们将不得不拿出二进制代码“手”,然后输入到计算机的ROM。该代码可能能够执行一些非常简单的任务,例如向某个输出设备打印“Hello”。一旦成功了,我们将扩展它以拥有一个加载程序,这样我们就可以加载一个二进制文件(或者以其他方式添加新命令)。一个非常简单的编辑器来编辑文件,一个文件存储将是非常有用的。然后我们可以开始编写一些代码,可以读取人类可读的指令(汇编代码),并从中生成二进制代码。一旦我们有了汇编器,我们就可以在汇编器中编写一个程序,接受(非常简单的)C输入和输出汇编器。汇编这些代码,我们就有了一个(非常简单的)C编译器。现在我们可以使用简单C编译器在“简单C”中编写更好的C编译器。再坚持一段时间,你就会得到一个像样的C编译器。。。但这可能是几年的工作,除非你已经做过很多次这样的事情

任何能够读取文本文件、比较字符串并以“自由格式”输出二进制文件的语言都非常适合编写编译器。这当然不是小事

我已经为Pascal编写了一个编译器,它使用LLVM编译器框架生成实际的代码含义,我已经完成了编译器的简单部分,在一个高质量的编译器中,最难的部分是代码生成过程,我只在LLVM中间表示中进行了这项工作,这就是LLVM的全部思想——它是一种简化的机器代码“语言”,然后LLVM为您的语言提供IR->机器代码。我的编译器目前大约有13400行C++代码——LLVM中的代码生成和优化是数以百万计的行——其中很多甚至我不知道它是如何工作的[超出了简单的概述,根据描述的功能做什么] [/P>
[1] 通常还有一些库,其中包含不适合直接存储在头中的较大函数。这些文件是使用相同的编译器[或与之兼容的编译器]构建的,您使用该编译器将源代码构建到二进制文件中。

C头文件是用C编写的(对于C++也是如此)。问题的第二部分是一个有趣的问题(引导编译器),但第一部分不清楚,你是什么意思?c/c++头是用c/++定义编写的。是的,我刚刚意识到第一部分是愚蠢的,但是你能详细说明我的第二部分的答案吗question@VisnuGanth:我想我已经大致解释了这些天和过去这个过程是如何工作的。您可能想退房和/或