摘要: 对于整个链接器来讲,它的工作就是将几个目标输入文件加工后合并成一个输出文件。 链接器如何将它们的各个段合并到输出文件? 按序叠加。但是直接将输入文件叠加。 相似段合并。将相同性质的段合并到一起。 链接采用相似段合并。链接的步骤分两步: 第一步:合并+分配虚拟地址空间。 在链接之前,所有的段的虚拟地址 阅读全文
posted @ 2022-12-16 21:42 stu--wy 阅读(66) 评论(0) 推荐(0)
摘要: 链接的接口--符号 在链接中,我们将函数和变量统称为符号,每个文件都有一个相应的符号表,这个符号表记录了目标文件中的所有符号。每个符号对应了一个符号值,对于函数和变量名,符号值就是他们对应的地址。符号可能是定义在本目标文件的全局符号,在本目标文件引用的全局符号等。 符号表--》结构体数组 符号表也像 阅读全文
posted @ 2022-12-16 20:32 stu--wy 阅读(118) 评论(0) 推荐(0)
摘要: cppreference.com c++手册 guides.github.com/introduction/git-handbook git手册 https://cs144.github.io/assignments/lab0.pdf pdf文档 鸠摩搜索 检索免费的电子书 github.com s 阅读全文
posted @ 2022-12-16 15:37 stu--wy 阅读(426) 评论(0) 推荐(0)
摘要: CPU,IO,内存是核心的硬件。 理论上讲,增加CPU的数量会提高运行速度,且CPU的数量和运算速度成正比。但是我们的程序并不都能分成多个不相干的子问题。 操作系统的一个功能是提供抽象的接口,另外一个主要功能是管理硬件资源。 计算机的能力是有限的,无论你是否使用它,资源总是那么多,所以人们挖空心思要 阅读全文
posted @ 2022-12-16 15:24 stu--wy 阅读(31) 评论(0) 推荐(0)
摘要: hello,world 是怎么执行的?总体来讲就是四个步骤。 预处理 编译 汇编 链接 1.预处理的动作如下: 2.编译(将是一个大动作,有限状态机)生成汇编代码 扫描:字面理解 语法分析:生成一棵语法树。 语义分析:语法有没有确定的意义,比如两个指针相乘是没有意义的,编译阶段的语义分许是静态语义。 阅读全文
posted @ 2022-12-16 15:23 stu--wy 阅读(81) 评论(0) 推荐(0)
摘要: 编译器在编译源代码后生成的文件叫目标文件,就是指编译后未进行链接的中间文件,目标文件与可执行文件的结构和内容很相似,从广义上看,目标文件和可执行文件的格式几乎是一样的。动态链接库也是按照可执行文件的格式存储的,静态链接库是把很多目标文件捆绑在一起形成一个文件,再加上一些索引。 ELF 文件的类型 可 阅读全文
posted @ 2022-12-16 15:22 stu--wy 阅读(209) 评论(0) 推荐(0)