首页 > 编程语言 >《程序是怎样跑起来的》第八章

《程序是怎样跑起来的》第八章

时间:2024-02-19 19:22:53浏览次数:28  
标签:文件 代码 程序 第八章 编译器 本地 源代码 CPU 怎样

心得:了解了本地代码、源文件、导入库等,更细致的了解了栈,遇到了堆
知识点:

  1. 本地代码
    CPU可以解析和运行的程序形式称为本地代码。可以通过编译源代码得到本地代码。扩展名为.obj的目标文件的内容属于本地代码。Windoows中EXE文件的程序内容,使用的就是本地代码。本地代码的内容就是各种数值的罗列,Dump是指把文件的内容每个字节用两位16进制数来表示的方法,这些数值就是本地代码的真面目
  2. 源文件
    用某种编程语言编写的程序,就称为源代码。保存源代码的文件称为源文件。用C语言编写的源文件的扩展名通常是“.c”。源文件是简单的文本文件,用Windows系自带的记事本等文本编辑器就可以编写。CPU直接解释并运行的是本地代码的程序。用任何编程语言编写的源代码,最后都要翻译成本地代码,否则CPU就不能理解
    3.编译器
    能够把C语言等高级编程语言编写的源代码转换成本地代码的程序,称为编译器。根据CPU类型的不同,本地代码的类型也不同,因而,编译器不仅和编程语言的种类有关,和CPU的类型也是相关的。编译器本身也是程序的一种,需要运行环境。除了常见的几种c编译器外,还有一种交叉编译器,它生成的是和运行环境中的CPU不同的CPU所使用的本地代码
  3. 可执行文件
    为了得到可以运行的EXE文件,编译之后还需要进行“链接”处理。“_W_c”是用来指定编译Windows用的程序的选项.选项是对编译器的指示,有时也称为"开关"。编译后生成的不是EXE文件,而是扩展名为.obj的目标文件。把多个目标文件结合,生成一个EXE文件的处理就是链接,运行连接的程序就称为链接器(linkage editor或连结器)BorlandC++的连接器就是ilink32.exe命令行工具
  4. 库文件
    库文件指的是把多个目标文件集成保存到一个文件中的形式。外部符号是指其他目标文件中的变量或函数。不是通过源代码形式而是通过库文件形式和编译器一起提供的函数称为标准函数
    6.DLL文件和导入库
    Windows以函数的形式为应用提供了各种功能,这些形式的函数称为API(应用程序接口)。Windows中API的目标文件是存储在名为DLL文件的特殊库文件中。存储着目标文件的实体,并直接和EXE文件结合的库文件形式称为静态链接库
  5. 再配置信息:在程序运行时,虚拟的内存地址会转换成实际的内存地址,链接器会在EXE文件的开头追加转换内存地址所需的必要信息。这个信息称为再配置信息
  6. 栈和堆
    栈是用来存储函数内部临时使用的变量(局部变量),以及函数调用时所用的参数的内存区域。堆是用来存储程序运行时的任意数据及对象的内存领域。他们的内存空间都是在程序运行时得到申请分配的。但是栈不需要程序员的参与,每当函数被调用时,都会得到申请分配,并在函数处理完毕后自动释放;堆的内存空间则要根据程序员编写的程序来进行申请分配或释放。无论是C语言还是C++,如果没有在程序中明确释放堆的内存空间,那么即使在处理完毕后,该内存空间仍会一直残留,这个现象称为内存泄露
  7. ······

标签:文件,代码,程序,第八章,编译器,本地,源代码,CPU,怎样
From: https://www.cnblogs.com/HCL291026hcl/p/18020973

相关文章

  • 《程序是怎样跑起来的》——第4章 熟练使用有棱有角的内存
    一、内存的物理机制1、内存的作用:计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。2、内存的概念:内存实际上是一种名为内存IC的电子元件。3、内存的形式:包括DRAM、SRAM、ROM等多种......
  • 对于计算机磁盘的认识(《程序是怎样跑起来的第5章》)
    在第五章中,我认识到了磁盘和内存的关系。在先前我一直认为数据是被存储到内存上的,但是通过阅读,计算机中的数据实际是被存储到磁盘上的,而内存是将磁盘上的数据调入,以供CPU来处理。因为磁盘传输数据十分缓慢,所以即使CPU可以直接读取磁盘的数据,也会采用磁盘到内存到CPU如此路径来提高......
  • 聊聊微信小程序的流式(stream)响应请求
    场景:类似ChatGPT的逐字显示效果。流程:服务端我用Python的flask框架(向外提供API接口)实现,服务部署在replit上,Python调用azure的chatgpt服务(需要申请),并以流式的形式返回,小程序再调用这个流式接口实现。我会提供最小能运行的完整代码示例。我本地的Python版本:3.10.11、Flask版本:2.......
  • 《程序是怎样跑起来的》第五章第一节读后感
    在阅读了《程序是怎样跑起来的》第五章第一节后,我对计算机程序的执行过程有了更深入的了解。这一节主要介绍了计算机程序的执行过程,并详细阐述了程序的加载、链接、运行和终止过程。通过本章的学习,我对程序运行的过程有了更加清晰的认识,同时也激发了我对计算机技术的兴趣。......
  • 《程序是怎样跑起来的》第二章读后感
    在阅读了《程序是怎样跑起来的》第二章后,我对计算机硬件和软件之间的关系有了更深入的了解。这一章主要介绍了计算机的硬件组成和软件分类,并详细阐述了计算机硬件和软件之间的相互作用。通过本章的学习,我对计算机系统有了更加清晰的认识,同时也激发了我对计算机技术的兴趣。......
  • 《程序是怎样跑起来的》第四章读后感
    在阅读了《程序是怎样跑起来的》第四章后,我对计算机程序的运行机制有了更深入的了解。这一章主要介绍了计算机程序是如何在计算机内部被执行的,并详细阐述了程序的加载、链接、运行和终止过程。通过本章的学习,我对程序运行的过程有了更加清晰的认识,同时也激发了我对计算机技......
  • 《程序是怎样跑起来的》第六章读后感
    第六章主要讲的是自己动手压缩数据。首先我们要知道,文字是以字节为单位记录的,因此我们都可以认为文件就是一串连续存储的字节数据,文件压缩的原理主要是游程编码。像这样将文件内容用“数据x重复次数”来表示的压缩方法,被称为游程编码,游程编码是一种很好用的压缩方法,常用在传真的图......
  • 第八章:从源文件到可执行文件
    在《程序是怎样跑起来》的第八章中,作者详细介绍了程序从源文件到可执行文件的整个过程。这一章节通常涉及到编译原理和链接技术,对于理解程序的生命周期和执行过程至关重要。以下是我对这一章节的读后感:首先,本章可能从源代码的编写开始,介绍了编程语言的基本概念。源代码是人类可读......
  • 记账本程序开发笔记3:模块设计和框架搭建
    在记账本程序中,可以设计以下模块和框架:       结构体AccountItem:表示记账项,包括itemType(收入或支出)、amount(金额)和detail(说明)。loadDataFromFile函数:从文件加载记账项数据到vector<AccountItem> 中。accounting函数:记账主函数,根据用户输入的操作调......
  • 记账本程序开发笔记1
    记账本程序可以记录用户的收入和支出,可以查询用户的总收入和总支出,还可以查看用户的收支明细。用户可以通过命令行输入不同的指令来操作记账本程序,比如添加收入、添加支出、查询总收入、查询总支出、查看收支明细等。记账本程序的基本功能包括:添加收入:用户输入收入金额和收入说......