
CSAPP Note
文章平均质量分 88
SixDayCoder
渣校的渣渣
展开
-
CSAPP学习笔记——Integer Representation
整数的二进制底层表示对于字长(word size)为w的机器,用w位bit表示一个字(word)。[x(w-1),x(w-2).....x0]无符号整数的二进制表示如果该字表示一个无符号整数的话,我们可以用下列公式来计算 unsinged int = ∑w−1i=0xi2i \sum_{i = 0 }^{w-1}x_{i}2^{i}范围 : 0 2w−12^{w}-1原创 2015-08-11 21:05:00 · 1168 阅读 · 0 评论 -
CSAPP学习笔记——Fraction Binary Numbers
浮点数的二进制底层表示同整数的二进制底层表示,浮点数也是2的幂的加权。 对于二进制比特串[bm,bm−1...b2,b1,b0,b−1,b−2,b−3....b−n−1,b−n][b_{m},b_{m-1}...b_2,b_1, b_0,b_{-1},b_{-2},b{-3}....b_{-n-1},b_{-n}] 表示 float number=∑i=−nmbi∗2ifloat\ number原创 2015-08-18 11:26:50 · 1706 阅读 · 0 评论 -
CSAPP读书笔记——程序的机器级表示之条件跳转与循环
程序控制指令上一章节讲到的是数据的移动、计算的底层代码表示,其中,每条汇编指令都是顺序执行的。考虑C语言中三种程序执行方式。顺序、条件、循环。本章简练介绍条件分支(if、switch)和循环(do-while,while,for)的机器级表示。条件分支条件分支指代单条件分支。程序通过测定某些条件的成立与否,控制程序的走向。反映到C语言当中,即if−elseif-else语句。 除了整型寄存器之外,原创 2015-09-09 20:53:52 · 2032 阅读 · 0 评论 -
CSAPP读书笔记——程序的机器级表示之寄存器分布与mov指令集
IA32整数寄存器的划分IA32(Inter Architecture 32-bit)处理器中有88个3232位的寄存器(register)用来存储整型和指针(浮点数由单独的寄存器处理)。这就是88个integer registerinteger\ register的简单图示。其中每个3232位的寄存器都由%e\%e 开头,每个寄存器的低1616位都可以作为单独的存储空间来存储1616位的数据(例如原创 2015-09-06 20:14:21 · 2413 阅读 · 2 评论 -
CSAPP读书笔记——程序的机器级表示之栈帧结构
引子C语言的基本构成单位是函数,通过合理的组织、调用函数来完成一系列的目的。 我开始学习的时候就好奇调用函数(或者说调用过程)时到底发生了什么? 数据在内存中是如何组织的? 函数返回时如何准确到找到下一条将要执行的指令? 等等等一系列的疑问,了解了之后,豁然开朗,记录下来时常温习。栈帧结构IA32的程序使用堆栈支持过程的调用(函数的调用),在函数调用时会专门从堆栈中分出一块内存(称为帧)供函原创 2015-09-17 19:14:03 · 2558 阅读 · 1 评论 -
CSAPP读书笔记——结构体的内存对齐
分配内存时,许多计算机系统会对内存的地址施加一定的规则。一般来讲,分配的内存的地址最好是K的倍数(K = 2,4,8)。这个设定的目的是简化处理器与内存系统的接口设计,这样分配内存的操作只需要用一条指令即可完成。 不同的计算机系统有不同的限制规则,道理来讲,这种K字节强制对齐虽然会浪费一些内存,但是会提高效率。 为此,微软的操作系统强制要求: 任何K字节基本对象的地址都必须是K的倍数任何K字节原创 2015-10-14 20:10:32 · 980 阅读 · 0 评论 -
硬链接和软连接
硬链接和软连接Linux和Windows的文件系统的设计几乎是完全不同,但是为了更好的组织文件,方便文件的查询,都有硬链接和软连接(符号链接)的概念。这两个概念一直不太清楚,这里整理一下。文件数据分为两块: (1)文件持有的数据:文件存储的数据 (2)文件的元数据:文件的属性数据,例如文件的名字,路径,操作权限…..在文件的元数据中有一个非常重要的属性,在Linux系统中称为i...原创 2018-02-22 19:27:29 · 863 阅读 · 0 评论