大家好,今天小编关注到一个比较有意思的话题,就是关于c语言的编译原理的问题,于是小编就整理了4个相关介绍c语言的编译原理的解答,让我们一起看看吧。
c语言为啥编译?
2、计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
3、编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
c语言的特点和编译原理的契合度?
1) 语言简洁,使用方便灵活 C语言是现有程序设计语言中规模的语言之一。C语言的关键字很少,ANSI C标准一共只有32个关键字,9种控制语句。C语言的书写形式比较自由,表达方法简洁,使用一些简单的方法就可以构造出相当复杂的数据类型和程序结构。 2) 可移植性好 C语言是通过编译来得到可执行代码的,C语言的编译程序便于移植,从而使在一种单片机上使用的C语言程序,可以不加修改或稍加修改即可方便地移植到另一种结构类型的单片机上去。 3) 表达能力强 C语言具有丰富的数据结构类型,可以根据需要***用整型、实型、字符型、数组类型、指针类型、结构类型、联合类型、枚举类型等多种数据类型来实现各种复杂数据结构的运算。C语言还具有多种运算符,灵活使用各种运算符可以实现其他高级语言难以实现的运算。 4) 表达方式灵活 C语言的语法规则不太严格,程序设计的自由度比较大,程序的书写格式自由灵活 5) 可进行结构化程序设计 6) 可以直接操作计算机硬件 C语言具有直接访问单片机物理地址的能力,可以直接访问片内或片外存储器,还可以进行各种位操作。 7) 生成的目标代码质量高
C语言中什么是编译?
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的过程。
编译语言是一种以编译器来实现的编程语言。它不像直译语言一样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器码,再加以运行。
C语言是根据什么原理和机制生产汇编的?
用C/C++语言这类高级编程语言所编写的程序源码是利用一种叫做“编译原理”的技术,经过一些列的处理步骤,最终转变为汇编指令,再最后翻译机器指令。我们知道计算机只能处理和识别二进制指令,而我们所编写的程序包含各种较复杂的结构,例如 if语句、循环语句、继承、多态、虚函数等。其实,在很早的时候,计算机科学家们就已经在研究如何把接近人类语言的高级语言所编写的程序转换成机器指令了。这些研究成果都归属于“编译原理”领域,并且“编译原理”是计算机专业学生的必修课。
那么根据编译原理,C语言是怎么转换成[_a***_],总共分以下几个步骤:
1. 预处理 -> 2.词法分析 -> 3.语法分析 -> 4.语义分析 -> 5.优化 -> 6.链接
注意,我上面列出的过程是目前实际中真正***用的步骤,编译原理课程中可能没有把完整步骤列出来,只列举了核心的几个步骤。
上面每个步骤在编译原理课程中都有一个专门的章节来讲述。这里大概说一下每个步骤的作用吧。
1. 预处理:负责执行C语言中的#include, #if, #else 等预处理指令。注意,这里是去执行这些预处理指令。这些预处理指令的作用是根据你的系统环境配凑出最终版的源代码。
2. 词法分析:把你定义的函数名、变量名、预留的关键字等抽象化,用一个符号来代替,方便编译程序处理。例如上图中的main, return, printf等单词,都被看作一个符号,转换成M, R, P。在这个过程中,会检查你的变量名、函数名名称是否正确。
3. 语法分析:经过词法分析处理之后,程序代码已经变成一堆符号了,例如 I S T F ... M I R P(放心,人已经不认识了,但是计算机能认识)。这时的符号是打散的,语法分析负责把这些符号按照一定的结构组织起来,形成一个抽象语法树(这个结构跟你写的程序代码的结构是对应起来的)。
到此,以上就是小编对于c语言的编译原理的问题就介绍到这了,希望介绍关于c语言的编译原理的4点解答对大家有用。