程序员的自我修养 读书笔记
1.北桥:协调CPU和内存、告诉的图形设备
南桥:处理低速设备:磁盘 USB 键盘 鼠标 由南桥汇总汇总连接到北桥上
硬盘:存储单位为扇区,每个扇区一般为512字节,一个硬盘往往有多个盘片,每个盘片分两面,每面按照同心圆划分为若干个磁道,每个磁道划分为多个扇区。每个磁道拥有相同数量的扇区,靠近盘面外围的磁道密度肯定比内圈更加稀疏。
CPU提供两条指令in out 来实现对硬件接口的读和写
IDE接口,有两个通道,IDE0 IDE1每个通道上可以连接两个设备,分别为Master和Slave
2.预处理 编译 汇编 链接
预编译 .c和头文件 .cpp和头文件(C++)
.i .ii
处理带#的命令 宏定义展开 删除注释 添加行号
编译 语法语义检查 .s
汇编 翻译 输出目标文件 .o(Linux) .obj(windows)
链接
3. 链接的核心内容:静态链接
代码放在代码段上 .code .text
初始化的全局变量 局部静态变量 放在数据段 .data
未初始化的全局变量和局部静态变量默认值都为0 放在.bss(只是为未初始化的全局变量和局部静态变量预留位置,bing并没有内容,zai'在文件中不占空间)
程序源代码被编译后分成程序指令(只读)和程序数据(可读写),代码段属于程序指令,数据段和.bss属于程序数据。
C++为了与C兼容,有一个用来或定义C的符号extern"C"
大括号内的代码当作C语言代码处理
编译器默认函数和初始化的全局变量为强符号,未初始化的为弱符号。
4.栈向低地址增长 堆向高地址增长
栈 先入后出
缺乏一些基础知识,先大致看了看。