问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

电脑编程的基础知识——编译器和连接器

发布网友 发布时间:2023-05-01 05:28

我来回答

1个回答

热心网友 时间:2023-10-10 22:44


我从没见过(不过应该有)任何一本C++教材有讲过何谓编译器(Compiler)及连接器(Linker)(倒是在很老的C教材中见过),现在都通过一个类似VC这样的编程环境隐藏了大量东西,将这些封装起来。在此,对它们的理解是非常重要的,本系列后面将大量运用到这两个词汇,其决定了能否理解如声明、定义、外部变量、头文件等非常重要的关键。
前面已经说明了电脑编程就是一个“翻译”过程,要把用户的程序翻译成CPU指令,其实也就是机器代码。所谓的机器代码就是用CPU指令书写的程序,被称作低级语言。而程序员的工作就是编写出机器代码。由于机器代码完全是一些数字组成(CPU感知的一切都是数字,即使是指令,也只是1代表加法、2代表减法这一类的数字和工作的映射),人要记住1是代表加法、2是代表减法将比较困难,并且还要记住第3块内存中放的是圆周率,而第4块内存中放的是有效位数。所以发明了汇编语言,用一些符号表示加法而不再用1了,如用ADD表示加法等。
由于使用了汇编语言,人更容易记住了,但是电脑无法理解(其只知道1是加法,不知道ADD是加法,因为电脑只能看见数字),所以必须有个东西将汇编代码翻译成机器代码,也就是所谓的编译器。即编译器是将一种语言翻译成另一种语言的程序。即使使用了汇编语言,但由于其几乎只是将CPU指令中的数字映射成符号以帮助记忆而已,还是使用的电脑的思考方式进行思考的,不够接近人类的思考习惯,故而出现了纷繁复杂的各种电脑编程语言,如:PASCAL、BASIC、C等,其被称作高级语言,因为比较接近人的思考模式(尤其C++的类的概念的推出),而汇编语言则被称作低级语言(C曾被称作高级的低级语言),因为它们不是很符合人类的思考模式,人类书写起来比较困难。由于CPU同样不认识这些PASCAL、BASIC等语言定义的符号,所以也同样必须有一个编译器把这些语言编写的代码转成机器代码。对于这里将要讲到的C++语言,则是C++语言编译器(以后的编译器均指C++语言编译器)。
因此,这里所谓的编译器就是将我们书写的C++源代码转换成机器代码。由于编译器执行一个转换过程,所以其可以对我们编写的代码进行一些优化,也就是说其相当于是一个CPU指令程序员,将我们提供的程序翻译成机器代码,不过它的工作要简单一些了,因为从人类的思考方式转成电脑的思考方式这一过程已经由程序员完成了,而编译器只是进行翻译罢了(最多进行一些优化)。
还有一种编译器被称作翻译器(Translator),其和编译器的区别就是其是动态的而编译器是静态的。如前面的BASIC的编译器在早期版本就被称为翻译器,因为其是在运行时期即时进行翻译工作的,而不像编译器一次性将所有代码翻成机器代码。对于这里的“动态”、“静态”和“运行时期”等名词,不用刻意去理解它,随着后续文章的阅读就会了解了。
编译器把编译后(即翻译好的)的代码以一定格式(对于VC,就是COFF通用对象文件格式,扩展名为.obj)存放在文件中,然后再由连接器将编译好的机器代码按一定格式在Windows操作系统下就是Portable Executable File Format--PE文件格式)存储在文件中,以便以后操作系统执行程序时能按照那个格式找到应该执行的第一条指令或其他东西,如资源等。至于为什么中间还要加一个连接器以及其它细节,在后续文章中将会进一步说明。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小米平板6Max没有网络怎么办 ...wifi和4G网络我都试过都现实吗没有网络。刚买的是正品没有刷机_百度... 2023年淘宝双11招商规则 淘宝国庆狂欢季招商规则及玩法 淘宝年货买不停招商规则 淘宝超来电活动招商规则 ZIP转换成RAR怎么转换? 衢州醉根艺品有限公司怎么样? 徐谷青主要业绩 徐谷青人物介绍 印度神曲拉姆卡丽的中文翻译歌词 印度歌曲"wohchali"是什么意思,这首歌表达的什么意思和感情 ★谁会印度语呀?好想知道这首印度歌到底是什么意思.... 国学宝典《战国策》:蔡泽见逐于赵 物极必反的道理是什么? 物盛则衰什么意思?有什么历史典故?反义词和近义词是什么? 物盛则衰的解释 170上海的电话怎么老是打一接通就是铃声 崩坏3女武神战车技能加点技巧分析一览 天地不负大耋公 福寿双栖老仙翁什么意思 足下危情v12石头在哪 12石子和机制砂的区别 完美国际一个12级的物理石头要多少个7级石头? 用共同利益造句(大约30个左右) 声明造句 苹果手机怎么下载不了抖音极速版赚钱 屏下faceid什么意思 梦见开学去上学 【安宁代理记账】关于公司注册地址与几大误区 朋友公司为了避税分两次发工资,另一份发到我的卡里,我会承担什么风险? 什是是CD格式 地面标高上端和下端是什么意思 社保待遇批量发放什么意思 建筑图纸上有上下两个标高什么意思 代发经办是什么意思 京东代缴社保代发工资 xx市场调查报告 营商环境调研报告材料 磷壮细胞癌相关抗原(SCC)未见明显异常是什么意思 房贷逾期十天没还为啥显示还款了 房贷逾期了一个月,去交房贷银行说交过了怎么回事 房贷自己没还但是显示本月还清 甲状腺近全切除术是什么意思 我以前追过一个男人,他当时明确拒绝了我,但是现在天天在蚂蚁森林给我浇水,以前我是知道他有晨跑习惯, 甲状腺两边切除对身体有什么影响 excel表格行列倒置怎么弄 梦见车子开走不等我是什么意思? 梦见车不等我的预兆 梦见车子不等我的预兆 tan到底是什么意思?