CSAPP lab1 datalab-handout】的更多相关文章

写在前面 之前考研的时候csapp的书有刷过5,6遍,所以对书本知识还算比较了解.恰逢最近在学c++的时候,顺带刷一下大名鼎鼎的csapp实验. 0. 环境准备 最好准备一个纯净的Linux系统这里建议使用docker 构建一个centos或者 ubuntu系统 实验资料的下载 ​CS:APP3e, Bryant and O'Hallaron docker上的环境搭建请参考下面的文章 CSAPP:Lab0-搭载环境 拉取centos系统 docker pull centos 建立目录挂载实现文件…
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…
主要涉及计算机中数的表示法: (1)整数: two's complement,即补码表示法 假设用N位bit表示整数w: 其中最左边一位为符号位,符号位为0,表示正数,为1表示负数. (2)浮点数: 浮点数采用类似科学计数法的方式 以float为例:编码分为三部分:首位为符号位S,然后是8位指数位exp,最后是23位有效数位frac. 即: x = S*M*2^E 例如: -1.10110 × 2^10 其中: 通常 E = exp - bais, 对于float, bais = 2^(8-1)…
前言 本篇博客将会剖析 CSAPP - DataLab 各个习题的解题过程,加深对 int.unsigned.float 这几种数据类型的计算机表示方式的理解. DataLab 中包含下表所示的 12 个习题,其中 9 个和整数有关,3个和单精度浮点数有关. 函数名 功能描述 分数 操作符 bitXor(x, y) 使用 & 和 ~ 实现异或操作 1 14 tmin() 补码的最小值 1 14 isTmax(x) x 是否为补码的最大值 1 10 allOddBits(x) x 的奇数位是否全为…
这是一个关于机器级的整数.浮点数表示和位运算的实验.要求用给定的操作符.尽可能少的操作数去实现对应的函数功能. 完整的实验包:链接: https://pan.baidu.com/s/1xUBi3XDlidPQFNexbjXoLw 密码: 2333 以下是全部函数的代码: /*****************************计算log2(x)向下取整*******************************/ int ilog2(int x) { int bit_16, bit_8,…
本次为一次计算机系统实验,就是使用一些基本的运算符来实现函数功能. ps做这些题让我想起大一上学期刚学二进制时被鹏哥支配的痛苦. 知识准备: 1.负数等于正数取反加一. 2.左移一位相当于将这个数扩大两倍,右移两位相当于将这个数缩小两倍 3.符号位向右移动后,正数补0,负数补1. 4.负数补码最高位是1,正数补码最高位是0 5. 32位正数取值为 最大:01111111 11111111 11111111 11111111 最小:10000000 00000000 00000000 000000…
任务:按照要求补充13个函数,会限制你能使用的操作及数量 bitXor(x,y) 只使用 ~ 和 & 实现 ^ tmin() 返回最小补码 isTmax(x) 判断是否是补码最大值 allOddBits(x) 判断补码所有奇数位是否都是1 negate(x) 不使用负号 - 实现 -x isAsciiDigit(x) 判断 x 是否是 ASCII 码 conditional(x, y, z) 类似于 C 语言中的 x?y:z isLessOrEqual(x,y) x<=y logicalNe…
注意不同版本的题目可能会有所不同,搜了很多他们的题目和现在官网给的实验题都不一样,自己独立思考完整做一遍顺便记录一下. PS:这些难度为1的题有的说实话我都做了挺久的,不过完整做一遍感觉很有意思,这些题总体感觉就是让你自己把那些运算符< ,> ? 什么的自己使用位级运算手动实现一遍,知道底层是怎样运作的. 一, bitXor: /* * bitXor - x^y using only ~ and & * Example: bitXor(4, 5) = 1 * Legal ops: ~…
CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数名(bufbomb -t)的差异,不影响我们的实验. 1.实验工具 1.1 makecookie 后面实验中,五次"攻击"中有四次都是使你的cookie出如今它原本不存在的位置,所以我们首先要为自己产生一个cookie. 实验工具中的makecookie就是生成cookie用的.參数是你的…
MIT6.828 lab1地址:http://pdos.csail.mit.edu/6.828/2014/labs/lab1/ 第一个练习,主要是让我们熟悉汇编,嗯,没什么好说的. Part 1: PC Bootstrap 首先,整个实验使用qemu这款模拟软件来,来对代码进行调试,相当于我们在qemu这个模拟的计算机平台上,运行自己的程序.可以再qemu这个软件上进行gdb的调试,比较方便. 首先看下整个内核在qemu上的模拟的结果: 整个内核现在能实现的就两个功能,一个kerninfo,显示…