csapp专题

[学习笔记]《CSAPP》深入理解计算机系统 - Chapter 3 程序的机器级表示

总结一些第三章的一些关键信息 Chapter 3 程序的机器级表示结构 updating... Chapter 3 程序的机器级表示 局部变量通常保存在寄存器中,而不是内存中,访问寄存器比内存快的多. 有些时候,局部数据必须存放在内存中, 寄存器不足够存放所有的本地数据对一个局部变量使用地址运算符 &, 因此必须能够为它产生一个地址某些局部变量是数组或结构,因此必须能够通过数组或

CSAPP Data Lab

CSAPP 的第一个 Lab,对应知识点为书中的第 2 章(信息的表示与处理),要求使用受限制的运算符和表达式实现一些位操作。主要分为两个部分:整数部分和浮点数部分。其中整数部分限制较多,比较偏重技巧性,部分题个人认为很有难度。而浮点数部分则比较基础,主要考察对 IEEE 754 标准的熟悉程度,代码较长,但思路相对简单。 bitXor 思路 使用德-摩根定律进行推导,推导过程如下: 代

深入理解计算机系统 CSAPP 第七章 与静态库链接

//addvec.cint addcnt = 0;void addvec(int *x ,int *y,int *z,int n){int i;addcnt++;for(i=0;i<n;i++)z[i]=x[i]+y[i];} //multvec.cint multcnt = 0;void multvec(int *x ,int *y,int *z,int n){int i;mult

CSAPP《深入理解计算机系统》深读笔记4——第三章-程序的机器级表示(一)

CSAPP《深入理解计算机系统》深读笔记4——第三章-程序的机器级表示(一) 你好我是拉依达,这是我秋招结束后更新的第一个系列。我将争取完成“ 年轻人,你渴望力量吗?”的全套深度笔记。 今天开始进行第一本CSAPP:深入理解计算机系统。 程序的机器级表示 编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。 GCC C语言编译器以汇编代码的形式

深入理解计算机系统 CSAPP 家庭作业6.35

第一步先求(S,E,B,m) 题目说共C=128个字节,块大小B为16个字节,那就是分为八组:0,1,2,3,4,5,6,7.然后每组存4个int 每个4字节 C=B*E*S .B=16 ,直接映射的E就是1,所以S=8 (S,E,B,m)=(8,1,16,7) C128M128s3b4t0 sizeof(int)==0100地址(二进制)COCIsrc[0][0]00000

深入理解计算机系统 CSAPP 家庭作业6.37

S=256 N=64时: sumA:这个很简单了,不说了 sumB:如下表. i递增时一直不命中 读到j=1,i=0 即读a[0][1]时 组0存放的是a[48][0] -a[48][3] 接着读a[1][1]时,组16放的是a[49][0]-a[49][3],j递增之后还是一直不命中 组0:a[0][0]a[16][0]a[32][0]a[48][0]a[0][1]组16:a

CSAPP-02程序开发和执行过程

1.最早的程序开发过程 2.汇编语言开发过程 3.高级语言开发程序 参考:袁春风老师课件

CSAPP-01计算机系统基本组成与基本功能

1.冯·诺依曼结构计算机模型 2.现代计算机结构模型 注:忽略做菜的例子 3.计算机系统的抽象层转换 参考:南京大学袁春风老师课件

【CSAPP导读】导论

目录 🌈 前言🌈 📁 书籍介绍 📁 阅读路线 📁 总结 🌈 前言🌈         《深入理解计算机系统》书籍是由布赖恩特(Bryant,R.E.)著的一本经典计算机科学教材,常被简称为"CSAPP",但是学习CSAPP是非常难的一件事情,原因主要由于教学水平参差不齐,教材阅读难度较大,相关资料稀少,对初学者较不友好。所以,这个专栏的主要目的就是解决这个问题,即从简单

CSAPP Lab01——Data Lab完成思路

陪你把想念的酸拥抱成温暖 陪你把彷徨写出情节来 未来多漫长再漫长还有期待 陪伴你 一直到 故事给说完 ——陪你度过漫长岁月 完整代码见:CSAPP/datalab-handout at main · SnowLegend-star/CSAPP (github.com) 01 bitXor 这道题是用~和&计算x^y。 异或是两个二进制数a,b对应的位相同为0,不同为1。既然是ai

CSAPP 六个重要实验 lab1

CSAPP && lab1 --------------------------------------------------------------------实验要求-------------------------------------------------------------------- The Bit Puzzles

CSAPP笔记——第四章处理器结构

目录 Instruction Set Architecture Programmer-Visible State Y86-64 Instructions Instruction Encoding MOV JMP 其他通用指令 指令集翻译 Y86-64 Exceptions 数字电路与处理器设计 CPU内部的处理器布局 这是寄存器文件内部的详细实现 verilog只用下

CSAPP笔记——第一章计算机系统漫游

hello,你好鸭,我是Ethan,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!💪💪💪 目前博客主要更新Java系列、项目案例、计算机必学四件套等。✔️✔️✔️ 人生之败,非傲即惰,二者必居其一,勤则百弊皆除。加油呀!🏃🏃🏃 🔥个人主页:Ethan Yankang 🔥专栏:CSAPP||计算机基础 🔥本篇概览:以hello world为例,讲解了

csapp proxy lab part 1

host, hub, 路由器,和 交换机 当手机连接到局域网中时,它需要找到网络中的交换机(Switch)。这通常是通过 DHCP(动态主机配置协议)完成的。DHCP服务器负责向手机分配IP地址、子网掩码、网关地址等网络配置信息。一旦手机获得了这些配置信息,它就可以与局域网中的其他设备进行通信,包括交换机。 当手机要与局域网中的其他设备通信时,它首先需要知道目标设备的IP地址。通常,手机会将目

CSAPP | Floating Point

CSAPP | Floating Point b i b_i bi​ b i − 1 b_{i-1} bi−1​ … b 2 b_2 b2​ b 1 b_1 b1​ b 0 b_0 b0​ b − 1 b_{-1} b−1​ b − 2 b_{-2} b−2​ b − 3 b_{-3} b−3​ … b − j b_{-j} b−j​ S = ∑ k = − j i b k

CSAPP Cache实验

程序A #include <sys/time.h> #include <unistd.h> #include <stdio.h>   main(int argc,char *argv[]) {   float *a,*b,*c, temp; long int i, j, k, size, m; struct timeval time1,time2; if(argc<2)

CSAPP 第九章---虚拟内存

1.为什么需要虚拟内存         在第八章我们了解了进程的概念。在计算机系统中,多个进程会共享CPU和内存,当某个进程需要过多的内存空间,那么另外的某个进程可能就会因为无法获得足够的内存空间而无法运行。此外,当某个进程不小心把数据写入另一个进程的内存空间,就会造成令人头疼的问题。虚拟内存能有效避免以上问题。 2.什么是虚拟内存         在计算机操作系统中,虚拟内存是对主存储

CSAPP Cache 知识总结; Cache Lab Part A

CSAPP 高速缓存部分总结 1、程序的局部性 时间局部性:多次引用相同的内存位置 空间局部性:引用之前临近的内存位置 为什么cache能加速访问?——程序的局部性特征 3、缓存不命中种类: (1)冷不命中:缓存为空时 (2)冲突不命中:访问的数据映射到同一个缓存块所导致 (3)容量不命中:缓存过小 Cache映射方式: 1、直接映射: 每个主存块映射到cache的固定行,优点是电路简单、

CSAPP Link总结;HIT linkbomb实验记录

目录结构: 一、链接总结 (1)符号解析:1、符号定义分类 2、静态链接解析过程 3、符号表条目 (2)重定位 (3)动态链接 1、静态库的缺点 2、位置无关代码 3、数据和代码调用 二、HIT linkbomb实验记录 链接总结 链接的作用是合并多个可重定位目标文件与静态/动态库,分为两个步骤,符号解析and重定位。 符号解析后获得(1)要合并的.o文件的集合(2)需要确定地址的符号集合 重

CSAPP 第八章---异常控制流

1.什么是异常控制流         举个例子:假设有A1,A2两个值,其内存位置相邻,并且分别存放着指令I1、指令I2的地址,当计算机读取A1到读取A2的这个过渡,称之为“控制转移”,这样的 控制转移序列 叫做处理器的 控制流。         当A1和A2的内存地址相邻的时候,且A1和A2存放的指令在执行顺序上也相邻的时候,那么就称这样的控制流为“平滑控制流”。        如果A1和A

CSAPP 第六章 存储器层次结构

一、引入         在计算机系统中,CPU负责执行指令,而存储器系统为CPU存储指令和数据。         存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。如下图:         越接近高层,存储器的访问速度越快,存储能力越小,造价越高。          二、存储技术的介绍 1.寄存器:         寄存器是CPU内部用来存放数据的一些小型存储区

讲解pwngdb的用法,以csapp的bomb lab phase_1为例

参考资料 Guide to Faster, Less Frustrating Debugging 什么情况下会使用gbd 需要逆向ELF文件时(掌握gdb的使用,是二进制安全的基本功)开发程序时,程序执行结果不符合预期 动态调试ELF文件可以使用另外一种方法:IDA的远程linux动态调试。个人觉得使用ida调试更为方便,因为ida是图形化界面,那么可以使用鼠标交互,比如通过鼠标

CSAPP DATA LAB1————位运算

计算机组成位运算实验,写的比较详细。 1题目与解答: ./* * bitAnd - x&y using only ~ and | * Example: bitAnd(6, 5) = 4* Legal ops: ~ |* Max ops: 8* Rating: 1 */int bitAnd(int x, int y) {return ~(~x|~y);} 题意解析:

CSAPP buflab

level 0 由getbuf中的0x08048fe6 <+6>: lea -0xc(%ebp),%eax可知buf所在的地址为%ebp-0xc,由栈帧的结构可知getbuf中的返回地址保存在%ebp+4中,所以输入16个字节后输入的内容为smoke的地址0x08048e20,输入的内容为64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 20 8e

【CSAPP】AttackLab

​🔖诗赋清音:烛龙翔夜啸,翼舞星空深。 巍峨山川壮丽志,激荡热血梦侠心。 目录 1. CSAPP与AttackLab简介 1.1 CSAPP 1.2 AttackLab 2. AttackLab 2.1 实验环境 2.2 实验过程 2.2.1 level 1 2.2.1.1 解决思路 2.2.1.2 问题验证 2.2.2 level 2 2.2.2.1 解决