CSAPP实验笔记
文章平均质量分 86
吃着油条唱歌
这个作者很懒,什么都没留下…
展开
-
CSAPP:MallocLab
Malloc Lab做什么?实现一个内存分配器怎么做?非常建议看完书后,自己写一遍,进步非常大,可以检测出你哪块理解不够深刻,可以将这块知识点吃的很透彻。在遇到瓶颈的时候看看人家怎么写的,不然写出的代码有局限性,结果都不太好。比如说我的方案只按照书上的提示走,没有考虑各种方法相结合所以具有局限性,博客可以看https://zhuanlan.zhihu.com/p/126341872 这位大佬的隐式链表实现(按照9.9.12思路编写)/* * mm-naive.c - The fa原创 2021-05-28 10:57:04 · 495 阅读 · 0 评论 -
CSAPP:ShellLab
shelllab做什么补全缺失的函数,以实现简易的命令行。需要补全的函数有: void eval(char *cmdline)//对一条命令进行解析运行 builtin_cmd(char **argv) //解析是内置命令还是可执行性文件名 void do_bgfg(char **argv)//执行bg,fg命令 void waitfg(pid_t pid)//等待前台进程结束 void sigchld_handler(int sig) //SIGC原创 2021-05-28 10:55:32 · 206 阅读 · 0 评论 -
CSAPP: CacheLab
perflab要干啥?重写kernels.c中的rotate.c与smooth函数使之更快。怎么干?rotate.c无法循环展开因为这道题每一步都在寻址,并且寻址的目标每一步都不相同,并且在一个地址的值一次就赋值完毕,不会对同一个地址进行二次寻址,所以我想的改进方向就是使得寻址更加快速。所以我使得寻址的地址更加连续。改进如下:void rotate(int dim, pixel *src, pixel *dst) { int i, j, t,n; n = dim ...原创 2021-05-28 10:52:42 · 339 阅读 · 0 评论 -
CSAPP:Perflab
perflab要干啥?重写kernels.c中的rotate.c与smooth函数使之更快。怎么干?rotate.c无法循环展开因为这道题每一步都在寻址,并且寻址的目标每一步都不相同,并且在一个地址的值一次就赋值完毕,不会对同一个地址进行二次寻址,所以我想的改进方向就是使得寻址更加快速。所以我使得寻址的地址更加连续。改进如下:void rotate(int dim, pixel *src, pixel *dst) { int i, j, t,n; n = dim ...原创 2021-05-28 10:51:08 · 550 阅读 · 0 评论 -
CSAPP:Attack
attack-lab要干啥?利用漏洞改变./ctarget与./rtarget文件的输出。怎么干?运用objdump -d xxx来获取反汇编代码:ctarget:phase1 00000000004017a8 <getbuf>: 4017a8: 48 83 ec 28 sub $0x28,%rsp 4017ac: 48 89 e7 mov %rsp,%rdi 4017af: ...原创 2021-05-28 10:47:33 · 238 阅读 · 0 评论 -
CSAPP:Boom
Boom!!!要干啥:顾名思义,拆炸弹,一共有6关,你要在每一关输入指定的字符串来拆除炸弹。怎么干:gdb基础:具体使用看官网或者技术博客,我只在这里介绍本实验用到的gdb命令。quit是退出gdb调试,可简写为q run让程序跑起来,一般是设置断点后输入该命令进行调试,可简写为r break设置断点,break后面跟着的可以是行,可以是函数名称,可以是地址,可简写为b step若为函数则进入函数,但是在本例中我使用s(step的简写情况)则直接跳过了进入函数步骤,到达主函数的下一条原创 2021-05-28 10:43:34 · 324 阅读 · 0 评论 -
CSAPP:DataLab
实验1:DataLab要干啥?按照要求填写bitsc.c内函数。怎么干?bitAnd(int x, int y):只使用~与|符号来实现x&y的效果,离散数学的知识,即 答案:~((~x)|(~y))getByte(int x, int n):只使用 ! ~ & ^ | + << >>符号,且最多只使用6个,来实现获取x中第n个字节信息,n从0开始。 基本思想就是让x右移f(n)个比特位,然后与0xff进行&运算,为什么是0xff呢原创 2021-05-28 10:39:25 · 1524 阅读 · 0 评论