共1条
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
查看 短消息 电子邮件 引用 回复
--------------------------------------------------------------------------------
堆栈,就是一种规定了操作方法的一队数据而已。先进后出。
关键词: 讨论 关于 堆栈 概念 发表 ----------
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? |
打赏帖 | |
---|---|
老胖子聊电路--分析一个反馈电路被打赏50分 | |
放大↔震荡被打赏50分 | |
【换取手持数字示波器】RTduino驱动ssd1306+sht31温湿度计被打赏40分 | |
【换取手持数字示波器】称植国产开源TobudOS到雅特力AT32F425被打赏40分 | |
【分享评测,赢取加热台】+Telink-泰凌微电子B91点灯篇被打赏20分 | |
【换取手持数字示波器】+精英板驱动LCD屏被打赏50分 | |
【换取手持数字示波器】+DFR0216全彩灯带WS2812示例分享被打赏50分 | |
【换取手持数字示波器】安装雅特力国产IDE-AT32IDE被打赏30分 | |
【换取手持数字示波器】+DFR0654板卡驱动数码管和串口功能分享被打赏50分 | |
【换取手持数字示波器】+DFPlayerMini模块推喇叭示例分享被打赏50分 |