首页 > 其他分享 >第八章 从源文件到可执行文件

第八章 从源文件到可执行文件

时间:2023-02-23 19:45:16浏览次数:40  
标签:可执行文件 文件 EXE 第八章 源文件 编译器 源代码 链接

       机器运行的是本地代码(Native Code)用某种编程语言编写出来的程序是源代码,保存源代码的文件是源文件。源文件只是文本文件,并不能直接运行,因为CPU只能运行本地代码(机器语言代码)。因此,源代码必须被转换为本地代码。

       本地代码里有什么?Window中.EXE文件的程序内容,就是本地代码。只有机器能够理解,人不能理解。将它DUMP一下,即每字节以2位16进制(2进制和16进制的转换规则中,二进制中每4位可以转换为十六进制中1位)的形式表现,就可以发现,本地代码其实是数值的集合。每一个数值都代表了一个命令或一个数据。

        从源文件到可执行文件的过程第一步:转换源代码:编译器编译器:将编程语言编写的源代码转换为本地代码的程序。编译完成的程序为.obj目标文件,内容是本地代码。但是还不能够运行。转换每种高级编程语言都需要其专有的编译器,例如C语言的C编译器。同种编程语言在不同CPU下的编译器也不同。编译器也是程序,因此也需要适合它的运行环境。因此,确定一个编译器的种类,需要确定哪种编程语言+哪种CPU+哪种运行环境。而实际上购买和下载时,通常指需要确定编译器产品名称+版本号即可。第二步:生成.EXE文件与启动:链接器经过编译器的编译,源文件已经被转换成了.obj目标文件。链接:将多个目标文件结合起来,生成一个.EXE可执行文件。链接器:运行链接的程序。库文件,即.lib文件,是指将多个目标文件集成保存在一个文件里的形式。标准函数:在库文件中收录的函数。在程序中,不通过源代码另行编写,而通过库文件提供的函数。如果主程序中使用了标准函数,在运行链接程序时,链接器就需要指定收录它的库文件,将库文件中需要的.obj目标文件(包含此标准函数)抽取出来,与其他目标文件共同生成一个.EXE可执行文件。在链接时,必须链接一个特殊的目标文件,它记述了同所有程序起始位置相结合的处理内容,成为程序的启动。

        存储着目标文件的实体,并直接和EXE文件结合的库文件形式称为静态链接库。静态(static=静态的)同动态(dynamic=动态的)是相反的意思。存储着sprintf()的目标文件的cw32lib就是静态链接库。sprintf(提供了通过指定格式把数值转换成字符串的功能。通过结合导入库文件,执行时从DLL文件中调出的MessageBox()函数这一信息就会和EXE文件进行结合。这样,链接器链接时就不会再出现错误消息,从而就可以顺利编写EXE文件。

        栈是用来存储函数内部临时使用的变量(局部变量),以及函数调用时所用的参数的内存区域。是用来存储程序运行时的任意数据及对象的内存领域。

标签:可执行文件,文件,EXE,第八章,源文件,编译器,源代码,链接
From: https://www.cnblogs.com/locojo/p/17149173.html

相关文章

  • IDEA打开项目代码,识别不了资源文件(java文件、yml文件等),找不到或无法加载主类 com.xxxx
    如图所示,识别不了java文件和yml文件   点开EditConfigurations发现找不到启动类  运行会报错:  可以尝试如下解决办法办法:        然......
  • Nginx系列---【配置文件中静态资源文件禁止通过目录查看】
    配置文件中静态资源文件禁止通过目录查看1.问题nginx作为文件服务器时,默认是可以通过目录路径查看该目录下的所有文件的,这样很不安全,容易造成静态资源泄露。2.方案lo......
  • PMP学习笔记《第八章 项目成本管理》
    质量管理的各种名言警句:1、等级低不一定是个问题,质量未达到要求肯定是个问题;2、PDCA循环由休哈特定义,戴明改进并完善PDCA环(14条原则)即持续改进;预防胜于检查3、朱兰:质......
  • 第八章 系统错误消息 - 一般系统错误消息 A -D
    第八章系统错误消息-一般系统错误消息A-D一般系统错误消息下表列出了IRIS系统错误消息。如果系统进程因错误而终止,它将通过操作员控制台报告错误消息。系统错误消......
  • 2.20 资源文件 消息断点
    1.创建对话框点击查看代码实现按钮点击获取编辑框的值获取参数1实现按钮点击获取编辑框的值获取参数1实现按钮点击获取编辑框的值获取参数1实现按钮点击获取编辑框的......
  • 第八章 IO库
    第八章IO库前面章节已经在用的IO库设施istream:输入流类型,提供输入操作。ostream:输出流类型,提供输出操作cin:一个istream对象,从标准输入读取数据。cout:一个ostream对......
  • 第八章从源文件到可执行文件
    本章所讲的就是原文件与可执行文件及其转换。源代码是用某种编程语言编写的程序,源文件是保存源代码的文件。用任何编程语言编写的源代码经过翻译后得到的是本地代码。本地......
  • 如何展示C语言源文件的汇编代码文件及其二进制目标代码?
    假设一个C语言源文件包含如下函数定义:longmult2(long,long);voidmultstore(longx,longy,long*dest){ longt=mult2(x,y); *dest=t;}在命令行上使用"......
  • 重学Java-第八章 Java条件语句
    8.1if语句8.1.1语法​ 当需要根据给定条件来决定是否执行一段代码时,就需要用到if语句了。if块仅在布尔表达式(if括号内的表达式)为true时执行。if块的结构如下:if(条......
  • 8.7 可执行文件运行时的必要条件
    在程序运行时,虚拟的内存地址会转换成实际的内存地址。链接器会在EXE文件的开头,追加转换内存地址所需的必要信息。这个信息称为再配置信息。EXE文件的再配置信息,就成为了变......