上一页 1 ··· 6 7 8 9 10 11 12 下一页
摘要: 重定位 编译器并不知道引用符号的真正地址,暂时用临时的假地址代替着,把真正的地址计算工作留给了链接器,链接器可以根据符号的地址对每个需要重定位的指令进行地位修正。 重定位表 在ELF文件中,有一个叫重定位表的结构专门用来保存这些鱼重定位相关的信息。对于可重定位的ELF文件来说,它必须包含有重定位表, 阅读全文
posted @ 2019-03-05 19:27 睿阳 阅读(1783) 评论(0) 推荐(0) 编辑
摘要: 我们知道,可执行文件中的代码段和数据段都是由输入的目标文件中合并而来的。那么链接器是如何将它们的各个段合并到输出文件?或者说,输出文件中的空间如何分配给输入文件的。 按序叠加 最简单的方案就是直接将各个目标文件依次合并,但是这样做输出文件将会有很多零散的段。这种做法非常浪费空间,因为每个段都需要有一 阅读全文
posted @ 2019-03-01 17:09 睿阳 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 符号 链接过程的本质就是要把多个不同的目标文件之间像拼图一样拼起来,这些目标文件必须有像拼图那样的凹凸部分才能够粘合。 情景:目标文件B要用到了目标文件A中的函数“foo”。 那么就称目标文件A 定义(Define) 了函数“foo”,目标文件B 引用(Reference) 了目标文件A中的函数“f 阅读全文
posted @ 2019-02-28 13:10 睿阳 阅读(1203) 评论(0) 推荐(0) 编辑
摘要: 文件头 查看文件头 $ readelf h .obj Elf32_Ehdr |变量名 |英文名 |备注 | | | |e_ident |Magic |ELF魔数 | |Class |文件机器字节长度 | |Data |数据存储方式 | |Version |版本 | |OS/ABI |运行平台 | | 阅读全文
posted @ 2019-02-27 19:11 睿阳 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 文件头 查看文件头 $ readelf -h *.obj Elf32_Ehdr 变量名 英文名 备注 e_ident Magic ELF魔数 Class 文件机器字节长度 Data 数据存储方式 Version 版本 OS/ABI 运行平台 ABI Version ABI版本 e_type Type 阅读全文
posted @ 2019-02-21 18:03 睿阳 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 点乘 公式 几何意义 可用余弦定理推导 叉乘 公式 几何意义 三维上,是垂直于ab向量的法向量。 二维上,是ab向量所围成的平行四边形面积,即absinθ。 阅读全文
posted @ 2018-12-20 14:08 睿阳 阅读(1262) 评论(0) 推荐(0) 编辑
摘要: 诱导公式:奇变偶不变,符号看象限。 两角和与差: 和差化积: 积化和差: 二倍角公式: 半角公式: 辅助角公式: 万能公式: 阅读全文
posted @ 2018-12-20 13:58 睿阳 阅读(304) 评论(0) 推荐(0) 编辑
摘要: PC平台流行的可执行文件格式(Executable)主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable Linkable Format),他们都是COFF(Common file format)格式的变种。 定义 目标文件就是源代码编译后 阅读全文
posted @ 2018-10-29 11:57 睿阳 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 编译和链接 集成开发环境(IDE)一般将编译和链接的过程一步完成,这个过程叫做构建(Bulid),也有人翻译成生成. 构建的过程: 预处理(Prepressing)→编译(Compilation)→汇编(Assembly)→链接(Linking) 预编译 预编译过程主要处理那些源代码文件中的以#开始 阅读全文
posted @ 2018-09-27 17:14 睿阳 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 不同数据类型的大小 数据类型 大小 char 1 int 4 short 2 long 4 bool 1 float 4 double 8 typename* 4 typename[n] n char* = “123…n” string = “123…n” n+1 struct 根据结构体最大的数据 阅读全文
posted @ 2018-09-06 16:45 睿阳 阅读(162) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 下一页