发布网友 发布时间:2022-04-23 07:32
共3个回答
热心网友 时间:2022-06-17 18:00
作为一种编程语言,本身是谈不上工作原理的,实际上C语言所有的语法,正是C语言编译器的工作原理或者工作机制的具体实现。要细致的讨论起来是不可能,但是作为C语言程序员,必须了解这个大致的流程。一个程序,从C语言源码,到系统可执行的文件,一般经历四个过程。
1、预处理阶断,这个阶断是文本处理阶断,有预处理器来完成,会将源码中的带"#"开头的预处理命令进行相应的处理,在Linux上C语言的预处理器程序是cp命令。
2、编译阶断,这个阶断是有C语言编译阶断,在Linux上C语言的编译器是cc命令,它将C语言源码转换成汇编指令。
3、汇编阶断,这个阶断是汇编编译阶断,在Linux上C语言的汇编器是as命令,这个阶断会将汇编指令编译成二进制机器码。
4、链接阶断,这个阶断是会将汇编阶断生成的机器码目标文件,装载成一个系统可执行的文件,在Linux平台以ELF格式进行组装,在Windows平台上以PE格式进行组装。在Linux平台上的链接器命令为ld,在windows平台上的链接器命令为linker。
热心网友 时间:2022-06-17 18:00
在计算机底层硬件中,所有的数据都是以1和0两个高低电平来表示,计算机只能识别这两个电平。
编程语言类似于人类语言,我们很容易就能理解它的意思,编写代码的效率非常高。
但是,计算机只认识0和1,如何才能将“人类语言”转换成“0&1语言”呢?这就是编译器的工作了。
编译器能够将源代码(人类语言)翻译成目标代码(0&1语言),便于人类和计算机的沟通。
可以将目前流行的编程语言(如C语言、Java、PHP等)比喻成各国语言(如英语、汉语和法语等),为了表达同一个意思,可能使用不同的语言和语句。例如,表达“世界你好”的意思:
汉语:世界你好;
英语:Hello World
法语:Bonjour tout le monde
在编程语言中,输出“Hello World”:
C语言:printf("Hello World");
PHP:echo "Hello World";
Java:System.out.println("HelloWorld!");
使用C语言开发软件的一般步骤为:
使用编辑器编写源代码(source code);
使用编译器将源代码(source code)编译成目标代码(object language);
运行目标代码(object language),即编写好的程序。
可以看到,编译器是编程语言的关键,一种编程语言,本质上就是一种编译器,编程语言的效率高低,取决于编译器转换成的目标代码的效率高低。
可以这样来理解一门编程语言:
首先定义好该语言的语法和规范,例如,如何输入输出数据,如何操作文件等;
按照语法和规范开发编译器,这是关键步骤;
开发辅助功能,例如,调试器,编辑器等;
向世界公开该语言。
热心网友 时间:2022-06-17 18:00
C语言是一种语法规范,本身是需要语法编译器(比如gcc)提供支持。所以请参考编译原理相关理论。
编译流程大概是:源代码(.h/.c文件)、中间表示层、机器码(.exe/.dll/.lib/.so等文件)。