章节列表

  1. 【程序员自我修养】第一章:温故而知新——Hello World 背后的 12 层间接
  2. 【程序员自我修养】第二章:编译和链接——gcc 背后的 4 把刀
  3. 【程序员自我修养】第三章:目标文件里有什么——.o 文件的解剖学
  4. 【程序员自我修养】第四章:静态链接——两个 .o 怎么拼成一个 a.out
  5. 【程序员自我修养】第七章:动态链接——.so 怎么被运行时拼进去
  6. 【程序员自我修养】第六章:可执行文件的装载与进程——execve 之后内核做了什么
  7. 【程序员自我修养】第八章:动态链接的实现——ld.so 怎么自举 + GOT/PLT 代码长什么样
  8. 【程序员自我修养】第八章:Linux 共享库的组织——为什么 glibc 升级会崩老程序
  9. 【程序员自我修养】第十章:内存管理——栈帧、malloc、brk 与 mmap 的真相
  10. 【程序员自我修养】第十一章:运行库——main 之前和之后到底干了什么
  11. 【程序员自我修养】第十二章:系统调用——从 printf 到 sys_write 走了 7 层
  12. 【程序员自我修养】第十二章:线程库——NPTL、futex 与线程局部存储
  13. 【程序员自我修养】第十四章:调试——strace、gdb、ASan、perf 全套工具
  14. 【程序员的自我修养】系列总览:一份跨越 12 年的工程师内功心法
  15. 【程序员自我修养】第五章:Windows PE/COFF——MZ 残骸、IAT、DOS 头与 ELF 的本质区别
  16. 【程序员自我修养】第十五章:Windows 下的动态链接——DLL、IAT 重定位、注入与 DLL Hell
  17. 【程序员自我修养】第十六章:MiniCRT 实战——从 0 写一个 500 行的迷你 C/C++ 运行库
  18. 【程序员自我修养】第十七章:运行库深挖——TLS、全局对象构造析构与 stdio 缓冲