弦外之音

公告:《FFmpeg原理》一书创作中,访问地址:ffmpeg.xianwaizhiyin.net

源码下载地址:百度网盘,提取码:cat1 。 通过前面的文章《编译系统-自底向上研究方法》ELF符号段 ,基本已经知道了 符号表的 作用,就是能找到 变量,或者函数的位置。还是用 main 项目来分析,项目里面有个 sum.c 文件,里面有...

发布 0 条评论

源码下载地址:百度网盘,提取码:cat1 。 本文来讲解 ELF 里面的 符号段 symtab,也可以叫 符号表,因为相对于 段表 来说,symtab 他是一个段。但是对于 各个符号项 来说,symtab 他是一个表。所以把他叫成 是段 或者是表都可以...

发布 0 条评论

《编译系统-自底向上研究方法》ELF头部 ,之前这篇文章讲解了 ELF 的头部,头部有几个段表的字段,当时没有仔细讲解。 1,e_shoff ,段表的指针,也就是段表在 main 文件的偏移值。 2,e_shensize,段表中单个段的大小。 3...

发布 0 条评论

接着上篇文章分析,main.c ,sum.c,main 3个文件,下载地址:百度网盘,提取码:cat1 。用 xelfviewer 打开 文件 main ,如下图: 上图我圈出来几个重点,上面的 Offset 是指这个字段在 main 文件的位置,例如 0x12 ~ 0x14 ...

发布 0 条评论

编译系统的编译流程如下,摘自《深入理解计算机系统》。 从上面的流程图可看出,编译系统的最后一步是生成 可执行文件 hello 。在前面一步,是 ld 链接器把 多个 .o 文件 链接在一起。由于本书叫 ”自底向上研究方法“,所以肯...

发布 0 条评论

这本书名为什么叫 编译系统,而不是 编译原理,因为严格来说,编译原理 是针对 编译器的技术。而做程序开发,经常接触的不只是编译器,还有汇编器,链接器。所以我把这3个东西,编译器,汇编器,链接器,统称是 编译系统。 由...

发布 0 条评论

CPU芯片里面通常集成多级缓存,L1缓存,L2缓存,L3缓存,如下: 可能有人会比较疑惑,L0 缓存去哪里了?我们程序员不应该都是喜欢从 0 开始的吗?答案是 L0 缓存实际上就是那 x86-64 架构的那 16 个通用寄存器,rax,rbx 等等...

发布 0 条评论

打算有时间写一本书,用另一种方法来讲解编译系统。目前的《龙书》《虎书》《编译器设计》,都是从编译技术的,前端,中间代码,后端来讲的。而且为了知识的迁移性,没有指定前端语言跟后端语言。这种教学方式,我认为是自顶向下的讲...

发布 0 条评论

本文主要对 C 程序的编译,链接等过程做一个简单的介绍,环境是 Ubuntu18 + gcc,代码如下: main.h 头文件代码: int add(int a,int b) main.c 文件代码: #include "main.h" ​ int main() { int age_1 =...

发布 0 条评论