![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CSAPP
文章平均质量分 72
无知亦乐
当因为迷茫失去人生方向的时候,那就去学习吧!
展开
-
CSAPP第八、九章家庭作业(原书第二版)
答:到达第一个Fork()函数时,创建一个子进程,此时由于还没有调用过exit函数,故此时atexit函数此时还不会被调用,等待exit函数调用才打印2。第二个Fork()由创建一个子进程,此时有4个进程,其中2个打印0,2个打印1,当第一个Fork创建的子进程创建的子进程中每有一个子进程调用exit时,atexit函数就被调用打印2。如下图,所以每打印2之前都要先打印一个0或者一个1,故在5个选项中只有ACE符合可能输出的结果。8.23答:父进程接收并捕获第一个信号,当处理程序还在处理第一个信号时.原创 2021-01-14 21:01:02 · 1248 阅读 · 0 评论 -
CSAPP第七章家庭作业(原书第二版)
7.6buf前加了extern是外部符号,由main.c定义,故定义符号的模块是main.o,是int型变量,属于.data节;bufp0和swap函数前未加extern和static,故是全局符号,都在swap.c中定义,故定义符号的模块是swap.o,变量bufp0属于.data节,swap函数属于.text节;bufp1、incr、count前均有static,是本地符号,都在模块swap.o定义,swap、count属于.data节,incr是函数属于.text节;buf、bufp0、bufp1、原创 2021-01-14 20:55:17 · 1305 阅读 · 0 评论 -
CSAPP第六章家庭作业(原书第二版)
6.32A:地址格式因为地址宽13位且题目所给地址为0x0718,转换成二进制表示为 0 0111 0001 1000,填下表:B:存储器引用由题S=8,E=4,B=4,m=13所以s=3,b=2,t=m-(s+b)=8,0-1位是块偏移,2-4位是组索引,5-12是标记位,故根据题A中二进制地址表示可知,CO为00,CI为110,CT为00111000,由题中所给高速缓存表查看索引为0x6、标记位为0x38、块偏移量为0x0的数据为FA,命中。填下表:6.33A:地址格式因为地址宽1原创 2021-01-14 20:52:08 · 1909 阅读 · 0 评论 -
CSAPP第五章家庭作业(原书第二版)
5.15A.关键路径是%xmm1更新路径上的加法。B.CPE下界是浮点加法的延迟。C. 两个load操作的吞吐量界限。D.乘法不在关键路径上,是通过流水线实现的,两个版本的CPE都为3.00,其限制因素都是浮点数加法的延迟。5.17void inner4(vec_ptr u, vec_ptr v, data_t *dest){ long int i; int length = vec_length(u); data_t *udata = get_vec_start(u原创 2021-01-14 20:47:20 · 1331 阅读 · 3 评论 -
CSAPP第 3 章家庭作业(原书第二版)
3.54等价于汇编代码的 decode2 的 C 代码:int decode2(int x,int y,int z) { int temp1=z; temp1-=y; int temp2=temp1; temp2=temp2<<15; temp2=temp2>>15; temp1=temp1^x; return temp1*temp2;}3.56A: %esi保存x,%ebx保存n,%edi保存result,%edx保存maskB:result初始原创 2021-01-14 20:38:20 · 832 阅读 · 1 评论 -
CSAPP第五次讨论课:参照汇编代码将 c 语言程序补充完整
文章目录题目解答题目解答f:pushl %ebp //保存old %ebp movl %esp, %ebp //%ebp=%espmovl 8(%ebp), %eax //%eax值变为xmovl %eax, %edx //%edx值变为ximull 8(%ebp), %edx //%edx和x做有符号乘,结果x*x保存在%edx中movl 12(%ebp), %ecx //%ecx值变为ymovl $0, %eax subl %ecx,原创 2021-01-14 20:20:04 · 1229 阅读 · 1 评论 -
CSAPP第七次讨论课选题四:静态库和动态库
文章目录一、题目描述二、静态库和动态库三、结合题目进行相关函数设计四、编译静态库和动态库五、静态库和共享库对最终可执行文件的影响一、题目描述选题四: 在 Linux 里用 C 语言进行代码设计,能对一个班级、某一门课程、或者某一名学生的分数进行分析,比如分数段、最高分、最低分、排名、优势课程等,具体涉及分析内容尽量丰富,请各位同学根据个人对学校系统实际体验来完成。请将这些功能根据在第 7 章的学习,在 linux 下分别编译成相应的静态库和共享库(动态库);并在组内或组间进行库调用以评测所设计的库;原创 2021-01-14 20:08:09 · 1783 阅读 · 0 评论 -
CSAPP第六次讨论课:尝试给所给程序提升性能
文章目录一、题一(1)利用反汇编技术,与 gcc 汇编器优化进行比较;(2)比较循环展开次数对性能的影响,如展开 2 次和 3 次,展开次数越多越好吗?(3)其他可能优化的方法二、题二一、题一有如下代码: sum = 0; for (i = 0; i < length; i++) sum += x[i] * y[i]; 利用在第 5 章学习的相关技术,分析可能影响性能的部分,并尝试进行性能提升。要求:(1)利用反汇编技术,与 gcc 汇编器优化进行比较;原创 2021-01-14 19:53:20 · 1682 阅读 · 0 评论 -
CSAPP讨论课:switch与跳转表
文章目录选题五题目(1)通过跳转表来完成switch功能(2)调整case分支顺序后观察跳转表变化(3)编译器何时采用跳转表实现switch?选题五题目对于以下c程序:#include <stdio.h> int main() { int i=0; int j=0; switch(i) { case 1: j+=1; break; case 2: j+=2; b原创 2021-01-12 19:10:33 · 4026 阅读 · 1 评论 -
CSAPP实验buflab
文章目录前言level0:level1:level2:level3:level4:实验结果前言 buflab-handout文件夹下有需要我们进行攻击的可执行程序bufbomb,有可用于生成userid的makecookie,有进行字符间转化的hex2raw文件,我们需要自己设定一个ID,通过makecookie生成专属的cookie,这个cookie会在下面的几个阶段会用到。这里我的userid 是qjl,cookie是0x556c3121.level0: 在level0中要求我们当te原创 2021-01-12 13:04:31 · 1689 阅读 · 1 评论 -
CSAPP实验Bomb lab
文章目录一、Phase_1:二、Phase_2三、Phase_3四、Phase_4五、Phase_5六、Phase_6七、隐藏关实验结果一、Phase_1: 由图可知,在调用了strings_not_equal后,该函数的作用是判断两个字符串是否相等,将返回值%eax 进行test,我们可知必须要相等否则就会boom,再看前面的代码,再调用strings_not_equal之前进行了传参,第一个参数是0x20(%esp),推测有可能是自己输入的字符串,第二个参数是0x4(%esp),值为0x804a原创 2021-01-12 11:25:07 · 2282 阅读 · 0 评论 -
CSAPP实验datalab
文章目录1.用~和|表示&2.取整型数据的第n号字节3.逻辑右移4.求数x的二进制表示中1的个数5.不用!求一个数逻辑非6.返回最小的二进制补码7.判断x能否用n位二进制补码表示8.计算一个数除以2的n次方9.将x取负数-x10.判断数x是否大于011.判断x是否小于y12.求log2(x)13.返回-f,实参为NaN,返回实参14.int型强制类型转换成float型15.求浮点数uf的两倍实验结果1.用~和|表示&思路:由德摩根定律:x&y=(x|~y)int bitAnd(原创 2021-01-12 10:58:41 · 1837 阅读 · 0 评论