解剖C语言系列通过观察C语言翻译后的汇编代码来深入了解C语言。
该系列已经全部完成,并保存在 github 上(预备着随时修正错误):
https://github.com/1184893257/simplelinux
各章节简介如下:
- 照妖镜和火眼金睛 [2012/11/8更新](3)
怎么获得C语言翻译后的汇编代码,怎么获得消除宏的C源程序 - 局部变量 [2012/11/12更新](4)
i=3; (++i)+(++i)+(++i) 不同编译器结果不同,怎么看它们的运算过程。 - 全局变量 [2012/11/8上线](5)
全局变量与局部变量在访问方式上有什么不同 - 函数调用 [2012/11/9上线](6)
调用一个函数的前前后后 - 值传递 [2012/11/11上线](7)
C语言只有值传递,怎么修改外部变量 - 数组与指针 [2012/12/23更新](8)
数组的起始地址存在哪儿? - 字符串 [2012/11/15上线](9)
为什么有的字符串不能修改 - 结构体 [2012/11/17上线](10)
结构体与子元素什么关系,数组不能复制? - 奇怪的宏 [2012/11/19上线](11)
do{...} while(0)是何用意 - 内存对齐 [2012/11/28更新](12)
为什么要进行内存对齐,怎么关闭内存对齐 - 函数帧 [2012/11/24上线](13)
函数的局部环境:函数帧 - 函数帧应用一:谁调用了main? [2012/11/27上线](14)
不复杂 - 函数帧应用二:所有递归都可以变循环 [2012/11/30上线](15)
真的可以 - 未初始化全局变量 [2012/12/3上线](16)
未初始化全局变量 不跟 初始化全局变量 存一块儿 - 进程内存分布 [2012/12/6上线](17)
全局变量、堆、栈 在哪儿?访问它们的特点 - 编译优化 [2012/12/9上线](18)
C语言比汇编慢,怎么优化编译过程 - static变量 及 作用域控制 [2012/12/12上线](19)
压缩变量的作用域,提高源代码的可读性 - 变量名、函数名 [2012/12/15上线](20)
变量名、函数名在哪里终结,有什么用? - 函数指针 [2012/12/18上线](21)
函数指针跟普通指针有什么区别 - 可变参数 [2012/12/21上线](22)
可变参数怎么实现的?变参函数的可行性? - C语言的栈是静态的 [2012/12/23上线](23)
变参函数力不能及的地方 - 内联汇编 [2012/12/24上线](24)
gcc 以及 VC 的内联汇编 - 汇编实现的动态栈 [2012/12/25上线](25)
实现一个运行时的接受可变参数的printf
另外由于国外网站访问可能有点慢,我会在我的博客上一篇一篇地贴出来。
联系我:1184893257@qq.com