计算机系统I第10章详解.pptx

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机系统 I 第十章:栈 Problem Specification Algorithm Program ISA (Instruction Set Architecture) microArchitecture Logic Transistors Physics/Chemistry compute the fibonacci sequence for(i=2; i100; i++) { a[i] = a[i-1]+a[i-2];} load r1, a[i]; add r2, r2, r1; 计算机系统的抽象层次 C/C++编译的程序中两个重要的内存区域: 栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。 堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。 Stack(栈): 由系统自动分配:int b; //系统自动在栈中为b开辟空间 Heap(堆):需要程序员自己申请,并指明大小 p1 = (char *)malloc(10); //C p2 = new char[10]; //C++ p1, p2本身在栈中,分配的空间在堆中。 高级语言C/C++的内存管理 栈是一种存储机制,具有特有的访问规则 栈的重要作用: 中断驱动I/O 算数运算机制:基于栈的算术运算,用栈来存储中间结果,取代寄存器 数据类型转换:二进制补码与ASCII字符串之间的转换算法 后续数据结构和操作系统课程还会深入学习 栈: 一种抽象数据类型 定义:栈是一种具有LIFO (last-in first-out: 后进先出)访问特性的存储结构 第一个放进去的,最后一个取出来 最后一个放进去的,第一个取出来 因而栈特殊的地方在于它的访问方式,而不是它的实现。 栈的两个主要操作: PUSH(压入): 在栈中插入一个元素 POP(弹出): 在栈中删除一个元素 栈的基本结构 汽车上的硬币盒 弹出来的第一个硬币是最后进去的。 栈的实例-1 1995 1996 1998 1982 1995 1998 1982 1995 初始状态 压入一个硬币 再压入三个硬币 弹出一个硬币 硬件栈:在寄存器间移动数据 每压入或一个栈元素,栈中所有元素都将一起‘移动’ 栈的访问总是针对第一个元素,该寄存器标识为‘TOP’ 栈的实例-2 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Yes 空标志: TOP #18 / / / / / / / / / / / / / / / / / / / / / / / / No 空标志: TOP #12 #5 #31 #18 / / / / / / No 空标志: TOP #31 #18 / / / / / / / / / / / / / / / / / / No 空标志: TOP 初始状态 压入一次后 再压入三次后 弹出两次后 栈向下生长,数据在内存单元之间不需要移动 通过修改栈指针(TOP),使得总是指向最近压入的数据 在内存中的实现:软件机制 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / TOP / / / / / / / / / / / / / / / / / / #18 / / / / / / TOP #31 #18 / / / / / / / / / / / / #5 #31 #18 / / / / / / 初始状态 压入一次后 压入两次后 压入三次后 x4000 x3FFF x3FFE x3FFD R6 R6 R6 R6 假定用R6寄存器保存TOP指针 TOP TOP / / / / / / / / / / / / TOP=x4000 TOP=TOP-1 M[TOP]=#18 TOP=TOP-1 M[TOP]=#31 TOP=TOP-1 M[TOP]=#5 弹出过程 在内存中的实现:软件机制 / / / / / / #5 #31 #18 / / / / / / / / / / / / #5 #31 #18 / / / / / / #31 #18 / / / / / / / / / / / / #5 #23 #18 / / / / / / 初始状态 弹出一次后 弹出两次后 再压入一次 x3FFD x3FFE x3FFF x3FFE R6 R6 R6 R6 假定用R6寄存器保存TOP指针,R0保存读出数据 TOP #5 / / / / / / TOP=x3FFD R0=M[TOP]=31 TOP=TOP+1 R6=X3FFF TOP=TOP-1 R6=X3FFE M[TOP]=#23 TOP TOP R

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档