共2条
1/1 1 跳转至页
[讨论]关于uC/OSII中堆栈概念
特约点播:关于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
查看 短消息 电子邮件 引用 回复
--------------------------------------------------------------------------------
堆栈,就是一种规定了操作方法的一队数据而已。先进后出。
关键词: 讨论 关于 堆栈 概念 发表 ----------
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动——B站互动赢积分】活动开启啦! | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |