信息的表示和处理 在通用计算机中中,字节作为最为最小 的可寻址的内存单元,而不是访问内存中单独的位. 寻址和字节顺序 big endian (大端法),数据最高字节部分地址在地址处,和人的感觉逻辑相似 little endian (小端法),低字节部分在低地址处 布尔代数 1 TRUE 2 FALSE ~ NOT & AND | OR ^ EXCLUSIVE-OR(异或) 1 ^ 0 = 1 1 ^ 1 = 0 0 ^ 0 = 0 0 ^ 1 = 1 IEEE 754 浮点数 $ V = (-1…
原文地址:https://billc.io/2019/04/csapp-bomblab/ 写在前面 CS:APP是这学期的一门硬核课程,应该是目前接触到最底层的课程了.学校的教学也是尝试着尽量和CMU同步,课件和习题都直接照搬原版.包括现在着手的第二个实验室Bomb Lab.这个lab很有意思,没有提供全部c语言代码,需要手动根据反汇编语言推测在每一个阶段需要输入的内容,输入正确就可以进入下一个阶段. 理论上每个人获取到的lab都是不一样的,但对于自学学生而言在官网http://csapp.cs…
刚刚完成注册博客,想写一篇随笔,方便以后自己回顾.如果恰好也能帮助到你,是我的荣幸. 这次随笔是记载我的计算机系统(CS:APP,Computer Systems:A Programer's Perspective)课程的一次实验 为了实现这15个函数,参考了(抄袭了- -)网上很多大佬的解答,但是过程中也有了自己的一些体会. 下面分享一下自己的理解,每个函数的实现都附有相应解释,有个别自己还不是很理解就没有写解释,见谅啊. 注:实验环境 ubuntu 12.04 每次修改bits.c时,都要m…
CS:APP:Lab3-ATTACK 0. 环境要求 关于环境已经在lab1里配置过了.lab1的连接如下 实验的下载地址如下 说明文档如下 http://csapp.cs.cmu.edu/3e/attacklab.pdf 这是实验的分数和一些简介下面就开始我们的实验吧 1. Part I: Code Injection Attacks 1.1 Level 1 对于第一个我们不需要注入新的代码.只需要重定向我们的程序就可 1 void test() 2 { 3 int val; 4 val =…
原文地址:https://billc.io/2019/05/csapp-cachelab/ 写在前面 这是 CSAPP 官网上的第 4 个实验 buflab,也是学校要求的第三个实验.这个实验比上一个单纯考查汇编语言使用的 Bomblab 要难许多,需要认真理解一下程序运行时对栈帧的操作.对于自学的学生,可以前往 http://csapp.cs.cmu.edu/3e/labs.html 下载,下载后能得到一个很详细的 pdf 文档,需要认真阅读才能知道作者想让我们干什么.做这个实验同样也啃了很久…
下的第一UBUNTU12.04下Y86模拟器的安装:(參考http://archive.cnblogs.com/a/1865627/ 作适当改动) 1.安装bison和flex词法分析工具 sudo apt-get install bison flex 2.下载sim解压.地址http://csapp.cs.cmu.edu/public/students.html Chapter 4: Processor Architecture Y86 tools and documentation Sour…
<深入理解计算机系统>第三章的bomb lab,拆弹实验:给出一个linux的可执行文件bomb,执行后文件要求分别进行6次输入,每一次输入错误都会导致炸弹爆炸,程序终止.需要通过反汇编来逆向关键代码,得出通关密钥. 相关实验材料可以在CMU的官网下载:http://csapp.cs.cmu.edu/3e/labs.html 目前的水平只能完成到1-3关,详细记录攻关过程. 1.正式开始前的分析 先执行一下bomb,随便输入一个字串123. 首先要做的是在炸弹爆炸前设置断点,看程序都做了什么事…
原文地址:https://billc.io/2019/05/csapp-cachelab/ 这个实验是这学期的第四个实验.作为缓存这一章的配套实验,设计得非常精妙.难度上来讲,相比之前的修改现成文件,直接写一个程序也更高了一些.需要注意的是检查程序在编译时开启了 -Werror,需要保证没有警告才能成功编译. 从官方文档得知需要完善 csim.c 和 trans.c 文件,第一个是模拟一个高速缓存的程序并从由 valgrind 程序生成的 trace 文件中统计 hit, miss 和 evic…
3.1 程序的机器级表示 发展历史 Intel,AMD,ARM 等企业各有又是,CPU 从 8 位发展到 16 位,再到 32 位,近几年发展到 64 位,当下的 CPU 体系被称为 x86-64 体系结构,主要是 Intel 和 AMD 两家的产品. IA32 处理器体系结构是 32 位芯片. CPU 的微观视图架构 当下的计算机大多是采用冯诺伊曼体系结构,计算机由存储器,运算器,控制器,输入设备,输出设备组成. IA32 的寄存器 通用寄存器的特殊用法 EAX:扩展累加寄存器.在乘法和除法指…
存储器层次系统 笔记,应该不是一个大而全的文件,笔记应该是提纲挈领,是对思想的汇总浓缩,如果追求详实的内容反而是丢了初心. 计算机是抽象的,它的设计者努力让计算机变得简单,在设计上高度抽象,而计算机的存储系统就是这样一个对用户透明的部分,程序员布恩那个直接操作内存的控制,但是可以通过理解内存的组织结构,运行特点编写对内存友好的程序,编写具有较好时间局部性,空间局部性的程序. 存储器是多样的,从高速缓存 Cache 到主存,再到磁盘,机械硬盘,固态硬盘,他们是各有特色,一般来说,越接近 CPU 的…