计算机组成原理问题 50
1.什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?2..已知SS=FFA0H,SP=00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何...
1. 什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?
2. . 已知SS=FFA0H,SP=00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?
MOV AX ,8057H
PUSH AX
MOV AX ,0F79H
PUSH AX
POP BX
POP [BX] 展开
2. . 已知SS=FFA0H,SP=00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?
MOV AX ,8057H
PUSH AX
MOV AX ,0F79H
PUSH AX
POP BX
POP [BX] 展开
1个回答
展开全部
堆是由程序员自己申请并指明大小,在c中malloc函数 如p1 = (char *)malloc(10);栈由系统自动分配,如声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间。
栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。
堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会 遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内 存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的堆结点的大小不一定正好等于申请的大 小,系统会自动的将多余的那部分重新放入空闲链表中。
栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。
堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会 遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内 存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的堆结点的大小不一定正好等于申请的大 小,系统会自动的将多余的那部分重新放入空闲链表中。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询