CSAPP-Lab01 Data Lab 记录】的更多相关文章

总览 Problem-int bitXor bitXor - x^y using only ~ and & Example: bitXor(4, 5) = 1 Legal ops: ~ & Max ops: 14 要求只用"非"和"与"来表示"异或".首先想到"异或的非=同或": \[\begin{aligned}x\oplus y&=\overline{x}y+x\overline{y}\newlin…
前天讲到要刚CSAPP,这一刚就是两天半.CSAPP果然够爽,自带完整的说明文档,评判程序,辅助程序.样例直接百万组走起,管饱! datalab讲的是整数和浮点数怎么用二进制表示的,考验的是用基本只用位运算来实现一些看似稀松平常的操作.实际体会就是看题五秒钟,脱发两小时.当然做出来的成就感也是爆棚的. 求异或 根据离散数学等值演算写出公式 //1 /* * bitXor - x^y using only ~ and & * Example: bitXor(4, 5) = 1 * Legal op…
刚刚完成注册博客,想写一篇随笔,方便以后自己回顾.如果恰好也能帮助到你,是我的荣幸. 这次随笔是记载我的计算机系统(CS:APP,Computer Systems:A Programer's Perspective)课程的一次实验 为了实现这15个函数,参考了(抄袭了- -)网上很多大佬的解答,但是过程中也有了自己的一些体会. 下面分享一下自己的理解,每个函数的实现都附有相应解释,有个别自己还不是很理解就没有写解释,见谅啊. 注:实验环境 ubuntu 12.04 每次修改bits.c时,都要m…
CSAPP:datalab实验记录 bitXor /* * bitXor - x^y using only ~ and & * Example: bitXor(4, 5) = 1 * Legal ops: ~ & * Max ops: 14 * Rating: 1 */ 这道题的意思就是限定符号实现异或.我们很容易就知道: \[a \oplus b = \overline a b + a \overline b \] 再化简以下(逻辑代数的知识): \[\overline a b + a…
CSAPP buffer lab为深入理解计算机系统(原书第二版)的配套的缓冲区溢出实验,该实验要求利用缓冲区溢出的原理解决5个难度递增的问题,分别为smoke(level 0).fizz(level 1).bang(level 2).boom(level 3).kaboom(level 4).在实践中加深对函数调用和缓冲区溢出机制的理解(针对IA-32体系结构). 本记录使用的是取自原书配套网站的self-study handout版本,网址为http://csapp.cs.cmu.edu/2…
记录关于CSAPP 二进制炸弹实验过程 (CSAPP配套教学网站Bomb Lab自学版本,实验地址:http://csapp.cs.cmu.edu/2e/labs.html) (个人体验:对x86汇编寻址模式要有清晰的了解,如mov指令涉及的是计算出的地址所指向的存储单元的值,而lea指令保留的是计算出来的地址,数字是否加$表示常数的问题等: 实验中涉及的跳表的存储方式.链表的处理等是C语言的汇编语言实现方式,处理起来较为复杂,但可对这些方式的对象底层实现方式有一个较为清晰的了解: 涉及指针操作…
本文是CSAPP第二章的配套实验,通过使用有限的运算符来实现正数,负数,浮点数的位级表示.通过完成这13个函数,可以使我们更好的理解计算机中数据的编码方式. 准备工作   首先去官网Lab Assignments获得实验相关的文件(也可以加我QQ获取教学视频.PPT等内容)在每个实验文件的README中都详细介绍了如何修改程序,编译程序等.建议仔细阅读,有不明白的可以留言,看到后会及时回复.   我的编译环境:Ubuntu 16.04,gcc 5.4.0.   编译时会报如下错误.   执行以下…
纸上得来终觉浅,绝知此事要躬行 实验概览 Attack!成为一名黑客不正是我小时候的梦想吗?这个实验一定会很有趣. CMU 对本实验的官方说明文档:http://csapp.cs.cmu.edu/3e/attacklab.pdf,按照 CMU 的文档一步步往下走就可以了. Part 1: Code Injection Attacks 在第一部分中,我们要攻击的是ctarget.利用缓冲区溢出,就是程序的栈中分配某个字符数组来保存一个字符串,而我们输入的字符串可以包含一些可执行代码的字节编码或者一…
bomblab这节搞的是二进制拆弹,可以通俗理解为利用反汇编知识找出程序的六个解锁密码. 早就听闻BOMBLAB的大名,再加上我一直觉得反汇编是个很艰难的工作,开工前我做好了打BOSS心理准备.实际上手后发现比想象的要简单. 我觉得这多亏了作者没有搞代码优化,让我能比较轻易的还原出源代码,甚至一眼看出所用的数据结构.但凡它搞一点儿代码混淆,都会把这次实验变成一次苦痛之旅. 前置小技巧 1.gdb调试汇编 我试了一番后觉得用以下几条指令在全屏模式下调试是体验最好的 gdb -tui ./bomb…
shlab这节是要求写个支持任务(job)功能的简易shell,主要考察了linux信号机制的相关内容.难度上如果熟读了<CSAPP>的"异常控制流"一章,应该是可以不算困难的写出来.但如果读书不仔细,或者实践的时候忘记了部分细节,那就可能完全不知道怎么下手,或者得改bug改到吐了.我自己写了大概八个小时,其中仅一半的时间都在处理收到SIGTSTP后莫名卡死的问题,最后才发现是课本没看仔细,子进程停止后也会向父进程发送SIGCHLD. 在实验中我们需要实现job.fg.bg…