目录
一、前言
其实学长在布置作业的时候是有发了一个英文的文件,里面的README是有lab这个东西的简介的。但是里面打开就是全英,真的是懒了。所以完全没看就自己去csdn一顿乱搜。水了一下午的课可算是搞懂了来龙去脉,但当我会看readme时才发现自己确实浪费了许多没必要的时间,唉,下次一定~~
总的来说csapp是一本关于计算机的大杂烩,什么都讲,包括os 、计算机网络network 、计算机组成、汇编等,而lab则是这本书上配套的练习题,完成起来也是有一定的难度的,实验文档都是英文的,并且实验是建立咋了linux平台上的。
上图找的有道,可以明白了lab就是有许多题,我们要按照它的要求去具体实现。 先来进行lab1-datalab
一下午的时间还是有收获的,下面我们就一步一步的开始吧!
二、配置lab环境
也看了很多关于配置环境文章,有简单需要安装docker,但对于我们小白,还是找个简单的吧
【CSAPP】lab0 环境的配置_刘_浩的博客-CSDN博客_csapp lab 环境配置【CSAPP】lab0 环境的配置引言我的环境配置折腾了一下午,其实很简单(前提是你已经安装过linux虚拟机)。整体分为三步:1. 下载源码2. 配置gcc环境3. 验证具体步骤1. 下载源码
https://blog.csdn.net/qq_45703010/article/details/120897185这个是我找到的最简单的一个搭建环境的方法,这里附上一张我自己配好环境的图
可以看到当我们输入./btest -g 之后已经列出来我现在的lab1的答题情况,包括Score这道题的得分
Rating这道题的难度也是这道题的满分,Errors出现的错误。
注意事项
接下来就是最重要的注意事项,其中分为int题和float题,注意事项不同,主要根据题目上方的提示进行做题。
int题允许:
整数常量0到255 (0xFF)。不允许使用像0xffffffff这样的大常量。
函数参数和局部变量(没有全局变量)。
一元整型运算!~。
二进制整数运算& ^ | + << >>。不允许:
使用任何控件结构,如if、do、while、for、switch等。
定义或使用任何宏。
在此文件中定义任何附加函数。
调用任何函数。
使用任何其他操作,如&&,||,-,或?
使用任何形式的铸造。
使用除int以外的任何数据类型。这意味着不能使用数组、结构或联合。float题
对于需要实现浮点运算的问题,编码规则不那么严格。你可以使用循环和条件控制。你可以同时使用整数和无符号。
可以使用任意整数和无符号常量。可以对int或unsigned数据使用任何算术、逻辑或比较操作。
但被明确禁止:义或使用任何宏。
在此文件中定义任何附加函数。
调用任何函数。
使用任何形式的铸造。
使用除int或unsigned以外的任何数据类型。这意味着不能使用数组、结构或联合。
使用任何浮点数据类型、操作或常量。
三、开摆~
首先我们打开这个文件

直接记事本形式打开就可以了,我们直接在里面修改,做题。之后在这个文件夹里打开终端,然后btest检查错误,订正。整体就是这样。我们先来看第一题:
1.bitXor
/*
1* bitXor - x^y using only ~ and &
* Example: bitXor(4, 5) = 1
* Legal ops: ~ &
* Max ops: 14
* Rating: 1
*/
int bitXor(int x, int y) {
题意就是只使用~和&来实现x^y的效果。这里需要知道一个知识点异或等于取反的组合。
int bitXor(int x, int y) {
int a = ~(x&~y



被折叠的 条评论
为什么被折叠?



