
深入理解计算机系统实验lab
Greatljc
这个作者很懒,什么都没留下…
展开
-
datalab-handout实验1的准备工作
这个第一个lab准备工作写在前面,这个关于如何开始编写程序,测试程序的正确性的。!!!最重要有一台linux系统的电脑,虚拟机也可以。需要从这个网址下载实验文件。http://csapp.cs.cmu.edu/3e/labs.html ,找到第一个实验,Data Lab 然后点击Self Study Handout,会有下载一个解压包。解压出来的文件有bits.c,btest等文件,然后b...原创 2019-07-25 01:23:07 · 1198 阅读 · 3 评论 -
深入理解计算机系统实验1datalab笔记
1.bitXor,思路:同时为0或者1的时候才为0,其他情况为1,所以可以先&操作(x & y),获得同时为1的。再将x,y进行~,然后再&,得到就是同时为0的(~x ^ ~y)。然后在这两个式子中都为0的就是01或10的。所以可以将这两个式子|运算再~就可以了。/* * bitXor - x^y using only ~ and & * Exampl...原创 2019-07-26 18:22:21 · 1937 阅读 · 0 评论 -
笔记cs:app--bomblab phase_1&&phase_2&&phase_3
大名鼎鼎bomblab实验必要时需要自己画出函数栈帧!必要时需要自己画出函数栈帧!必要时需要自己画出函数栈帧!由于不会作图,这里就不画了。phase_1通过反编译bomb文件得到phase_1的汇编代码观察phase_1的汇编代码观察将0x402400传入%esi, %esi是函数调用时的参数存放的寄存器,因为函数调用所用的寄存器都是依次有顺序的。%rdi, %rsi, %rdx...原创 2019-08-16 11:26:53 · 630 阅读 · 0 评论 -
笔记bomblab phase_4 && phase_5 && phase_6
phase_4先读入两个int类型的数。读入的第一个数的地址在%rsp + 8的位置。然后调用函数在地址0x400fe2时,通过前面0x400fce-0x400fdf可以计算出%ecx此时的值是0x7。往下看,假设执行了0x400fe4指令,就跳到了0x400ff2指令,然后%ecx和%edi再比较。第一次是jle(小于或等于),第二次是jge(大于或等于)。要想都满足条件,那就只能是0x...原创 2019-09-08 23:34:44 · 2241 阅读 · 0 评论