[CSAPP]-15213学习笔记
未读
[CSAPP]09 Machine-Level Programming V-Advanced Topic
内存布局 在电脑看来,内存就是一块很大的数组,我们也可以这样看。但是实际上内存的实现方式很有趣,采用了一种叫做虚拟内存的技术,我们在后面的章节可以探讨。 内存的四个区: 代码区(Text Segment):用于存放程序的机器代码,通常是只读的,用于存放程序的执行代码。 数据区(Data Segmen
[CSAPP]-15213学习笔记
未读
[CSAPP]08 Machine-Level Programming IV-Data
数组 数组的基本原则与指针运算 一维数组 数组的存储空间就是在内存中的一连串区域。 我们都知道在C中,数组名就是数组的首地址。我们可以采用val[x]的方式存取这个数组的第x+1个元素。 在上面的例子中: val[4]:数组的第五个元素的值 val:数组的首元地址x val+1:数组的第二个元素地址
[CSAPP]-15213学习笔记
未读
[CSAPP]07 Machine-Level Programming III-Procedures
过程:前言 ABI Application Binary Interface(ABI),应用程序二进制接口。ABI定义了应用程序和操作系统之间或应用程序和硬件之间的接口标准,包括数据结构、寄存器用法、函数调用约定等内容。 这是机器级别的程序接口。基本上所有操作系统都会认同这套接口,在这套统一标准上发
[CSAPP]-15213学习笔记
未读
[CSAPP]06 Machine-Level Programming II-Control
控制结构 在上一节中,我们的代码在汇编中一直按照顺序执行下去。那么如何控制代码的执行呢?这就是今天的内容。 条件码 CPU还有一组单个位的条件码(condition code)寄存器,也可以叫状态寄存器。用于描述最近的算数操作。 条件码有一下这些: CF是无符号数的进位标志 ZF是为0的标志 SF是
[CSAPP]-15213学习笔记
未读
[CSAPP]05 Machine-Level Programming I-Basics
英特尔X86架构 英特尔处理器历史 英特尔的第一款16位微处理器:Intel 8086 它基于CISC设计风格 英特尔芯片的历史年表:
[CSAPP]-15213学习笔记
未读
[CSAPP]01.1计算机系统漫游(补)
Amdahl定律 当我们想对系统的某一部分进行加速时,其对系统的整体性能的影响取决于该部分的重要性和加速程度。 定义代数: Told:更改之前的运行时间 Tnew:更改之后的运行时间 a:这个部分的运行时间占总时间的比 k:该部分的性能提升比例 S:加速比 加速比计算公式如下: $$ S=\frac
[CSAPP]-15213学习笔记
未读
[CSAPP]04 Floating Point
二进制实数的表示 例如: 5 3/4 -> 101.11 1 7/16 -> 1.0111 小数点向右移一位,这个浮点数乘2。反之向左移一位除二。 数0.11111……是无限接近于1的浮点数。用1.0-ε表示这种数。ε取决于小数点后的位数。 浮点数标准 在1985年以前浮点数的表示是一场灾难。在19
[CSAPP]-15213学习笔记
未读
[CSAPP]03 Bits,Bytes,and Integers_2
整形的运算 无符号数加法 实际上结果是u+v取2w的模 有符号补码的加法 有无符号数相加结果相同 正溢出变成负数,负溢出变成正数
[CSAPP]-15213学习笔记
未读
[CSAPP]02 Bits,Bytes,and Integers
使用二进制的位和字节表示一切 Byte = 8bits 表示数字范围: 二进制:00000000-11111111 十进制:0-255 十六进制:00-FF 注: 4位的bin bit转换为hex 在C语言中十六进制被表示为0x……(……为十六进制数) 下图为hex-dec-bin转换表