我有高级编程背景,对学习低级编程很感兴趣。我想知道编译器是如何编译的?
在看了维基上的一些文章后,Numerical machine code被认为是最底层的语言,但必须有一个编译器来编译这个机器代码。这个编译器是用什么语言写的?
发布于 2013-07-12 04:17:35
你可以随时使用你最喜欢的编译器A来编写另一个编译器,比如B。在这个B中,你添加了一些额外的功能,所以它很容易成为你最喜欢的编译器,你可以用它来编写编译器C,...
那么该如何开始呢?在过去,人们只是简单地在内存中填入原始数字,由CPU直接解释。这就是为什么源代码通常被称为代码。一旦一个最小的编译器以这种方式编程,就可以执行它来创建另一个用它编译的语言编写的编译器。这也可以用来创建更高级别的,以此类推。
事实上,将原始指令代码填充到内存本身可以被视为零级编译过程,其中人就是编译器。
一种给定语言的编译器通常是用同一种语言编写的。例如,C编程语言就是这种情况。这在某种程度上不是巧合,因为谁知道一门语言足够好,敢为它编写编译器,就可能会把这种语言作为他最喜欢的编程语言之一。这只是一个典型的例子,并不是必须的,因为有许多语言可供选择,包括那些特别适合编译器构造的语言。
发布于 2013-07-12 04:16:48
数字机器代码是二进制的。1和0。编译意味着将其简化为某种更低的形式,因此它并不是真正编译的。
例如,来自您引用的维基文章:For example, on the Zilog Z80 processor, the machine code 00000101, which causes the CPU to decrement the B processor register, would be represented in assembly language as DEC B.
因此,当您编写Z80汇编语言时,您将拥有一个编译器,并且指令DEC B将被编译为'00000101‘--反之亦然。
发布于 2013-07-12 04:21:32
Numerical Machine code代表电路的一系列off和on状态,是所有电子数据的最低级别。这种低级语言没有所谓的“编译器”,相反,计算机中的电路是以这样一种方式组合和构造的,即通过读取由高或低电态实现的代码中的on和off来“解释”它们。总之,这些高电平或低电平状态导致不同的门/电路打开或关闭,通常表现不同。在Electronic Gates上查看更多信息。
https://stackoverflow.com/questions/17602546
复制相似问题