![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机系统基础
Xiongcanne
湖南长沙湖南大学
展开
-
计算机系统第七章——链接
链接器:为什么需要链接器 链接器如何工作目标文件:可重定位目标文件符号与符号解析:符号与符号表 符号解析过程 静态链接库hello.c(text)->hello.i(把include的头文件插入源文件中,形成一个完整的源文件text)->hello.s(汇编文件,text)->可重定位目标程序(binary会引用一些库函数,如printf.o)->通过链接器,最终生成可执行文件hello(binary)(1)预处理(cpp):在高级语言源程序中插入所有有#include命令原创 2020-05-21 13:37:00 · 525 阅读 · 0 评论 -
计算机系统——第6章:存储器层次结构
存储器系统是一个具有不同容量,成本和访问时间的存储设备的层次结构。存储器:1.CPU寄存器:保存着最常用的数据2.高速缓存存储器:作为一部分存储在相对慢速的主存储器中的数据和指令的缓冲区域。3.主存:暂时存放存储在容量较大的,慢速磁盘上的数据,4.磁盘:这些磁盘常常又作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓冲区域存储器层次结构由此从高到低依次排列,层次越高,速率越快。CPU寄存器:零个周期高速缓存:1-30个周期主存:50-200个周期磁盘:几千万个周期计算机系统中一个原创 2020-05-17 12:25:45 · 2435 阅读 · 0 评论 -
计算机系统第三章——过程
什么是过程:在高级语言中也称为函数过程的调用包括将数据和控制从代码的一部分传递到另一部分在进入时为过程的局部变量分配空间,在退出时释放空间大多数机器,只提供转移控制到过程和从过程中转移出控制这种简单指令数据传递和局部变量的分配释放都是通过操纵程序栈来实现为什么用栈:参数传递,局部变量,寄存器保存防止有用寄存器内容被覆盖%ebp:栈底指针%esp:栈顶指针%esp中的值小于或等于%ebp中的值,调用者的栈桢和被调用者栈桢是相邻的任何函数第一步都是保存之前的ebp push %ebp调用原创 2020-05-15 10:24:06 · 446 阅读 · 0 评论 -
计算机系统第三章——控制
控制:条件码当前运行程序的相关信息临时数据(%eax,…)运行栈桢的地址(%ebp,%esp)即将要执行的指令地址(%eip,…)标志位CF:是否有进位,无符号数加减法ZF:结果是否为零SF:第一位是否为1(有符号数),结果为负数OF:结果是否溢出,有符号数有了溢出条件码设置:cmpl Src,Dest Dest-Src影响标志位比如比较两个有符号数的大小使用cmpl l1,l2如果l2<l1 SF^OF=1l2>l1 SF^OF=0testl b,a原创 2020-05-14 23:30:43 · 732 阅读 · 0 评论 -
深入理解计算机系统第二版第二章作业
题解:2.58 编写过程is_little_endian,当在小端格式机器上编译和运行时返回1,在大端格式机器上编译运行时则返回0。这个程序应该可以运行在任何机器上,无论机器的字长是多少。小端法是低字节放在低位,大端法则相反,比如0x12345678放在0x100这个首地址上小端法:100 101 102 10378 56 34 12而大端法则相反,所以这个程序可以这样设计Char solve(){int y=1;Char z=(char) y;return z原创 2020-05-14 21:47:04 · 1990 阅读 · 3 评论 -
计算机系统第二章——浮点数
二进制小数:底权公式1011.101=8+2+1+0.5+0.125=11.625窍门;小数部分写成分数,分母为2^k,k为小数位数,分子为小数部分二进制的值,即101=5/8=0.625观察:小数点右移一位——乘2小数点左移一位——除2二进制小数表示范围——只能精确表示诸如x/2^k的数其他的值只能近似表示IEEE浮点数数学形式:形如科学计数法符号位s 确定了这个数是负数还是正数,数值0的符号位特殊处理尾数M是一个二进制小数,通常规定在范围[1.0,2.0)满2就进位,所以不能等于2原创 2020-05-14 20:47:10 · 935 阅读 · 0 评论 -
计算机系统第二章——整数运算
扩展&截断:针对于二进制的位向量符号扩展:给定一个w位的有符号整数x将其转换为(w+k)-bit的整数,保持值不变规则:将x符号位复制k个但是如果是无符号数,在前面直接加0就可以了为什么补码的扩展只需要做符号扩展,值保持不变答:w位二进制扩展成(w+k)位,补码范围变成了2(w+k),此时对负数x求补码变为2(w+k)-|x|(这是负数x对应的那个互补的正数)之前的w位补码为2^w-|x|(这是负数x对应的那个互补的正数2(w+k)-|x|-2w+|x|=2(w+k)-2w=2w(2原创 2020-05-13 20:37:50 · 885 阅读 · 0 评论 -
计算机系统第二章——位与整数
一.位为什么是二进制:计算机是由仅具有开关两个状态的逻辑电路组成二进制的计算模式被十进制简单具有较强抗干扰性二进制便于布尔代数运算二进制:使用一个选中的数R作为底,并用它的幂作为权,这样就形成了用R来表示所有数的形式二进制就是以2为底,2的幂次来表示的形式进制转换:十进制转换二进制每个数除以二,得余数倒序也可以通过2的幂次拼接十六进制;从0到f,C语言中,使用0x********来标识十六进制数char字符型:1个字节short:短整型:2个字节int整型:4个字节long长整型原创 2020-05-13 16:31:38 · 741 阅读 · 0 评论 -
计算机系统实验——二进制炸弹(bomb)包括secret_phase
实验题目:本实验设计为一个黑客拆解二进制炸弹的游戏。我们仅给黑客(同学)提供一个二进制可执行文件bomb_64和主函数所在的源程序bomb_64.c,不提供每个关卡的源代码。程序运行中有6个关卡(6个phase),每个关卡需要用户输入正确的字符串或数字才能通关,否则会引爆炸弹(打印出一条错误信息)!要求同学运用GDB调试工具和objdump反汇编工具,通过分析汇编代码,找到在每个phase程序段中,引导程序跳转到“explode_bomb”程序段的地方,并分析其成功跳转的条件,以此为突破口寻找应该在命令行输原创 2020-05-10 18:37:34 · 4724 阅读 · 1 评论 -
计算机系统——第6章:存储器层次结构
存储器系统是一个具有不同容量,成本和访问时间的存储设备的层次结构。存储器:1.CPU寄存器:保存着最常用的数据2.高速缓存存储器:作为一部分存储在相对慢速的主存储器中的数据和指令的缓冲区域。3.主存:暂时存放存储在容量较大的,慢速磁盘上的数据,4.磁盘:这些磁盘常常又作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓冲区域存储器层次结构由此从高到低依次排列,层次越高,速率越快。...原创 2020-04-29 12:04:48 · 606 阅读 · 0 评论 -
计算机系统——浮点数
浮点数1.二进制小数二进制小数点右侧的“位”表示2的分数幂次(负幂)窍门:小数部分写成分数,分母为2^k,k为小数位,分子为小数部分二进制的值。即:.101=5/8=0.625表示范围:只能精确表示诸如x/2^k的数其它的值只能近似表示2.IEEE浮点数数字形式:符号位s 确定了这个数是负数还是正数,数值0的符号位特殊处理尾数M是一个二进制小数,通常规定在范围[1.0,2.0...原创 2020-03-26 20:07:23 · 1554 阅读 · 0 评论