
这是一种站在巨人肩人的作法,最早的C++编程语言也是这样的实现方法,只不过那时候叫Cfront程序,Cfront程序的作用是将C++代码转换成C语言代码,类似于一个文本处理器,然后再调用C语言编译器,将C源码编译成汇编代码,然后再调用汇编器将汇编代码编译成机器码。
这个过程,在Windows平台上不容易 *** 作,但是在Linux平台上很容易看到。以gcc这款c语言编译器为例,它实际上是四个小程序。
cp: c语言预处理程序,有它负责进行预处理 *** 作。
cc: C语言编译器,它负责将C源码编译成汇编代码。
as: 汇编器,它负责将汇编代码编译成机器码,一般使用gcc test.c这样的命令编译C语言时,会生成一个a.out的程序,它实际上指的就是as ouput,即汇编器输出文件。
link: 链接器,它负责将汇编器输入的机器码和库打包成一个 *** 作系统可以运行的可执行文件,在Linux上的可执行文件格式是ELF格式,这个格式的实现是有链接器来完成的。
C极为强大,有的人觉得可以归为高级语言。汇编相对来说是机器语言上面一层的,比C低一点。但是C语言的运行效率远不如汇编语言编写的程序运行效率高。嵌入式开发里有时C与汇编混合编程。可以两个一起学,加深理解源程序就是用程序语言编写的未经编译的程序,如C语言写的未编译的程序;汇编程序是用汇编语言写的未编译的程序;可执行程序就是电脑或手机直接能够运行的程序,如PC机的扩展名为.EXE,手机的.APP程序就是可执行程序;它是源程序经编译后成为可执行程序。目标程序就是编译过程用到的源程序或汇编程序。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)