0%

本次 lab, cachelab.

0. 说明

从这个lab开始,终于开始编写一些高级语言的代码了,而不像之前要去分析汇编。但是这并不意味这题目就简单了,实际上,cachelab耗费了我2天多的时间。ok,言归正传,这个lab的目的是什么呢?

cachelab帮助我们理解计算机存储体系中的重要组成部分–cache。 理解cache是如何组织的,如何工作的,又是如何影响我们的程序的性能的。

阅读全文 »

manjaro是个人最喜欢的linux发行版,但是给我的台式机安装后,总是死机,无奈暂时转入deepin。

后来发现manjaro死机,应该是给cpu超频的原因, 因为deepin也死机了,关闭超频后,一切正常,但是已经在deepin上安装好了各种环境,不想再更换回去。

本文依然是自己给自己的备份。

阅读全文 »

今天继续学习csapp.

前一个lab: Csapp-Datalab 详解

本次lab, bomblab.

0. 说明

这个实验相当好玩, 题如其名, 类似一个拆炸弹的过程. 实验只给了一个可执行文件, 需要学生通过gdb反汇编这个可执行文件, “拆弹”共有6个阶段, 每个阶段需要用户输入一个特定的字符串, 一旦输入错误, 炸弹就会爆炸,程序终止.

做完整个实验, 学生可以学会如何使用gdb, 能够看懂 gcc所编译出来的汇编代码. 掌握阅读汇编代码的能力.

gdb的使用可参考: gdb 调试基础

本次解释, 均已代码注释+图形解释.

所有汇编代码, 可通过 objdump -d bomb获得.

阅读全文 »

一直用惯了IDE集成的debug工具, 忽略了gdb这个命令行debug工具. 而最近在做csapp的bomblab, 就不得不来学习它了. 所以特此记录.

1. 基本使用

考虑以下我们在IDE中要进行debug一般需要哪些功能?

  1. 设置断点(包含条件断点)
  2. 开启debug
  3. step in, step over, continue
  4. 观察某些值的变化, 打印数组value, 打印某个地址value
  5. 函数调用stack, 切换stack
  6. 临时更改某个变量,参数的值

下面讲解如何用gdb实现这些功能。

为了更方便讲解, 这里提前把所有常用命令贴出, 读者可不用一一记住, 在逐渐使用的过程中,自然就能形成记住了.

阅读全文 »

准备把csapp详细看一遍,所有lab都做一遍,加深理解。

本篇是datalab的个人解法,所以很可能不是最优解

原课程地址:http://www.cs.cmu.edu/afs/cs/academic/class/15213-f15/www/schedule.html

ok,现在就来一道道题说明。

0. 说明

datalab着重于让学生理解 数字(integer,float point)在bit level上的表示与操作。通过限制学生的操作集(如仅能使用 ~, |, +等此操作),让学生在bit level上思考问题。

阅读全文 »

本博文主要写给自己做记录,其它朋友也作为参考。

1. 更新源

安装任何linux发行版后(除非是国内开发的发行版,如deepin),第一步做的就是切换到国内源,manjaro也不例外:

1
sudo pacman-mirrors -i -c China -m rank

添加archlinux源:

1
2
3
4
suo /etc/pacman.conf
## 中国科学技术大学 (ipv4, ipv6, http, https)
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

更新:

1
sudo pacman -Syyu
阅读全文 »

本篇博客仅写给自己做备份查看用。

背景:

  • 第n次放弃vscode又重新拾起,认真找了个系统视频看完后,现在感觉确实蛮香的;
  • 开虚拟机做linux开发,对于我的旧笔记本来说太难受了;
  • windows 的 linux子系统尝鲜。
阅读全文 »

一般来说,安装任何linux发行版后,我们做的第一步就是更换它的仓库源,然后才能愉快的下载各种东西。

这里就说一下ubuntu的通用换源方法:

1
2
3
4
5
6
# 备份源source.list
sudo cp /etc/apt/source.list /etc/apt/source.list.bak
# sed批量替换源地址
sudo sed -i 's/^\(deb\|deb-src\) \([^ ]*\) \(.*\)/\1 http:\/\/mirrors.aliyun.com\/ubuntu \3/' /etc/apt/sources.list
# update 生效
sudo apt update

ok, 就这么简单。