这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [讨论]关于uC/OSII中堆栈概念

共1条 1/1 1 跳转至

[讨论]关于uC/OSII中堆栈概念

菜鸟
2002-05-18 04:31:28     打赏
特约点播:关于uC/OSII中堆栈概念的纠正(zhangsifu) gao 于 2002/04/16 13:08 加贴在 嵌入式系统论坛 设为精华 删除 zhangsifu 工程师 来自: 发表总数:39   查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 在uCOS/II中多次提到了堆栈,但是本人对其堆栈概念的理解与书上描述有不同,现在写出来,希望能于大家交流,欢迎批评指正,来信:z_x_mail@263.net。 堆栈是一个有序元素组,一次仅能存取它的一个元素,这个存取点就称为栈顶,栈的最基本的操作有PUSH和POP,PUSH将新的元素加入栈顶,而POP操作将栈顶的元素移去【1】。 1. 在uC/OSII书中(P101最后一行,P109,P111)中所说的栈顶,我认为应该为栈底才对。因为在P102(页中第一行)有“而栈顶可能是堆栈的最高地址(堆栈从上往下递减),也可能是最低地址(堆栈从下往上递增)”,从这里可以看书,书里的栈顶应为栈底才对。 2. OS_STK_GROWTH=1时,堆栈从上往下递减;OS_STK_GROWTH=0时,堆栈从上往下递减。 3. P111页的图中,图的最下面应该为栈底,最上面应该为栈顶,这样理解起来才正确。 参考文献: 【1】William Stallings。计算机组织与结构-性能设计(第五版)(P269),北京:电子工业出版社,2001 Edited by - zhangsifu on 2002-03-11 12:54:17 -------------------------------- EMBEDDED -------------------------------------------------------------------------------- 编辑 发表於:2002-03-11 - 12:50:43 IP: 202.200.*.* aqian 高级工程师 来自: 发表总数:113 查看   短消息   电子邮件   个人主页   引用   回复 -------------------------------------------------------------------------------- 书上栈顶的概念不明确,它在书中有两个意思:1)堆栈的第一个存储单元的地址,也就是要压栈第一个压的就是它的那个存储单元;2)堆栈中压了若干数据后,最后压入的那个单元的地址是栈顶,这个时候堆栈指针指的就是它!;而书中的所说的栈底是相对于栈顶底第一个意思来说,是堆栈底最后一个存储单元,排行老末还不是垫底吗?呵呵:) -------------------------------- 天外有天 -没错 山外有山 -没问题 我外有你 -Certainly 你中有我 -哇塞,怎么可能哦? -------------------------------------------------------------------------------- 编辑 发表於:2002-03-11 - 13:46:21 IP: 211.97.*.* ljdmcu 高级工程师 来自: 发表总数:177 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 说的对!!当初我看它的代码的时候就觉得很别扭!!把我给搞糊涂了!! -------------------------------------------------------------------------------- 编辑 发表於:2002-03-11 - 17:26:07 IP: 61.142.*.* amine 版主 来自: 发表总数:518 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 栈顶应该是zhangsifu讲的意思, 就如一叠盘子, 放/取都是在顶上进行. -------------------------------------------------------------------------------- 编辑 发表於:2002-03-11 - 21:44:03 IP: 210.53.*.* hongwind 高级工程师 来自: 发表总数:101 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 我想事这样了,就是你指定一个开始地址,让后让你的堆栈向上或者向下增长,也就是你的数据是向高地址存放,还是向低地址存放,通常栈顶就是指你的堆栈第一个可用的存储单元,所以栈顶是固定的。总是在顶端,但是可能你的堆栈会向高处(地址)或者低处(地址)增长。 通常,还有区分堆栈的概念,堆和栈是用来存放不同数据的。 -------------------------------------------------------------------------------- 编辑 发表於:2002-03-12 - 08:26:07 IP: 61.177.*.* longyong 工程师 来自: 发表总数:37 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 堆栈,就是一种规定了操作方法的一队数据而已。先进后出。



关键词: 讨论     关于     堆栈     概念     发表     ----------    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]