神奇的编译器是如何编译代码的?一起来看看
Posted 嵌入式ARM
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神奇的编译器是如何编译代码的?一起来看看相关的知识,希望对你有一定的参考价值。
编译器是个比较神奇的工具,它可以把原来毫无意义的字符数据转变成一行一行可以执行的代码。作为每一个科班出身的同学来说,编译原理都是专业学习中必须经历的一个部分。只是在后来的工作中,真正从事编译器开发的同学少之又少,但是如果你懂得了编译原理的相关机理,会给你的工作带来很大的帮助。
关于编译原理的书很多,网上可以搜一下有阿霍版本的《编译原理》,有陈火旺院士的《编译原理》,张素琴版本的《编译原理》,三本书都不错。另外,现在关于编译原理也有很多的开发工具,比如说lex&yacc,只要你会编写基本的语法范式,设计自己的编译器也不是什么难事。
其实,现在的编译器早已经突破了原来的概念。比如说,编译器最终的代码不一定在实际机器上运行,可能是虚拟机;编译器编译语言时不一定需要生成可执行文件,能解释就行;编译器最好并行编译;编译器不一定很大,可能十几个文件就可以,比如说lua等等。
不过,我们今天说的编译器还是比较传统的c编译器,有兴趣的同学可以看看编译器是怎么帮助我们生成可执行文件的。我们按照词法、语法、语义、优化的顺序逐一展开。现在假设有这样一段代码,
语义分析有的时候和语法分析是联系在一起的。但是,这里我们把它拆开来单独成了一部分。所谓的语义分析,其实就是把前面生成的语法树拆解下来,生成原子语句操作的过程。比如说,上面的文件很可能是这样的形式,
这里需要解释一下,语义转换的结构和形式其实是各个编译器自己定义的,未必有通用的结构。这里的语句只是我自己想出来的,可能和实际的形式有很大的出入,但是基本方法应该是一样的。主要解释如下,
说到这里,我们也可以自己小试一下身手,看看代码怎么生成,熟悉x86代码的同学也可以自己试试,
领导说了,文章内容得一个赞给涨5毛工资,各位看官老爷,
帮小编点个赞吧,小编不胜感激~
以上是关于神奇的编译器是如何编译代码的?一起来看看的主要内容,如果未能解决你的问题,请参考以下文章