首页 > 编程语言 >《程序是怎样跑起来的》从源文件到可执行文件

《程序是怎样跑起来的》从源文件到可执行文件

时间:2024-02-23 17:12:17浏览次数:30  
标签:可执行文件 代码生成 中间代码 程序 源文件 链接

在这一章中,作者矢泽久雄首先为我们介绍了源文件的概念,即程序员使用某种编程语言(如C、C++、Java等)编写的原始代码文件。这些文件通常以文本形式存在,包含了程序的各种逻辑、数据结构以及函数调用等信息。然后,作者详细描述了编译器如何将这些源文件转换为可执行文件的过程。

编译过程主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。词法分析将源代码拆分为一个个的标记(token);语法分析将这些标记组合成语法树,表示程序的结构;语义分析则检查语法树是否符合语言的语义规则;中间代码生成是将语法树转换为中间代码,便于后续的优化和转换;代码优化则是对中间代码进行各种优化,提高程序的运行效率;最后,目标代码生成是将优化后的中间代码转换为目标机器码,即最终的二进制代码。

除了编译过程,这一章还介绍了链接过程。链接是将多个编译后的目标文件以及所需的库文件合并成一个可执行文件的过程。链接器需要解决符号引用问题,即将目标文件中的符号引用(如函数调用、全局变量等)与实际的定义进行关联。此外,链接过程还包括了重定位、合并段等步骤,最终生成一个可执行文件。

标签:可执行文件,代码生成,中间代码,程序,源文件,链接
From: https://www.cnblogs.com/sunshaohan/p/18029979

相关文章

  • 《程序是怎样跑起来的》操作系统与应用程序的关系
    首先,作者强调了操作系统作为应用程序与硬件之间的桥梁的角色。在早期的计算机系统中,程序员需要直接使用机器语言编写程序来控制硬件。然而,随着计算机系统的复杂性不断增加,这种直接控制硬件的方式变得既繁琐又容易出错。因此,操作系统应运而生,它提供了一组统一的接口和抽象层,使得应......
  • 《程序是怎么跑起来的》第3章读书笔记
    经过前两章对计算机内容最基本的理解之后,就迎来了对计算机的计算,而计算机也不是万能的,它也会出现错误,那么就涉及到计算机在计算小数时会出现错误的原因,首先课题通过一个问题将0.1累加100次的结果不是10这一话题成功将读者引入进去。然后告诉了我们为什么在计算机中会这样子出错的......
  • 《程序是怎样跑起来的》第六章
    当我翻阅到“亲自尝试压缩数据”这一章节时,我被作者深入浅出的叙述和丰富的实践案例所吸引。这部分内容不仅是对数据压缩概念的讲解,更是一次思考与实践相结合的完整体验。阅读完毕后,我对于数据压缩技术的理解有了全新的认识,也对这项技术背后蕴含的智慧感到赞叹。本章重点介绍了压......
  • 程序员怎么做沟通?聊一聊程序员沟通相关的问题
    一、程序员不善言词在大家的印象中,程序员好像是一群不善言词的理工男。为什么大家会有这种刻板的印象呢?因为程序员的工作,只需要一台电脑,一根网线,就可以开始工作了。好像不需要与人打交道。一段进入到工作状态,编码的时候还不希望被别人打扰,其实是编码思路不愿意被打断。这时候,他......
  • 《程序是怎样跑起来的》第九章
    第九章带我深入理解了程序的执行过程,让我对计算机的底层操作有了更加直观的认识。编译是将源代码转换为机器码的过程,而链接则是将各个编译后的目标文件组合起来,形成一个可以执行的程序。这两个过程虽然复杂,但它们是程序能够正常运行的关键。我学到了许多关于程序优化的知识。程......
  • 通过汇编语言了解程序的实际构成
    1.汇编语言和本地代码是一一对应的。即使使用汇编语言编写的源代码,最终也必须转换成本地代码才能运行。负责转换工作的程序称为汇编器,转换这一处理本身称为汇编。2.通过编译器输出汇编语言的源代码。3.不会转换成本地代码的指令的伪指令:汇编语言的源代码,是由转换成本地代码的指......
  • 《程序是怎样跑起来的》第十二章
    心得:在本章我们通过一个简单的游戏程序《猜拳游戏》,对计算机的“思考”机制进行了详细的说明知识点:1、“工具”程序和“思考”程序程序就如同是由计算机执行的各种指令罗列起来的文章。计算机内部的CPU通过对该文章的内容进行解析和运行,来控制连接到计算机的各种外围设备。具体......
  • 《程序是怎样跑起来的》——第十章读后感
    一:1.汇编语言是使用助记符来编写程序的。2.汇编需要使用汇编器来完成。3.通过反汇编可以得到人类能够理解的源代码。4.汇编语言源文件的扩展名在Windows中主要是asm,在Limu中主要是s。不过,本章中使用的C语言编译器BCC32虽然是在Windows环境下运行的,但使用了s作为汇编语言源......
  • 使用C# WPF写简单的桌面应用程序
    前言微软真是永远滴神,VisualStudio不愧是宇宙第一IDE,C#相比Java真的是语法简洁优雅案例实现了一个快速重命名的小程序,打包完以后的exe不到200KB,比Java轻的不是一点半点,而且在windows上执行效率很高,直接就可以在windows双击运行创建项目VisualStudio安装选择WPF选择.......
  • 《程序是怎样跑起来的》第五章读书笔记
    从都具有存储程序命令和数据这点来看,内存和磁盘的功能是相同的。在计算机的五大部位中,内存和磁盘也都也都被归类为存储部件。不过利用电流来实现存储的内存,同利用磁效应来实现存储的磁盘,还是有差异的,而从存储容量来看,内存是告诉高价,而磁盘则是低速廉价。程序保护在存储设备中,通过......