硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2400|回复: 8
收起左侧

[有问必答] 请问下,为什么没有把堆栈固定在RAM的尾部呢?

[复制链接]

3

主题

9

回帖

18

积分

新手上路

积分
18
发表于 2019-4-26 11:06:53 | 显示全部楼层 |阅读模式
请问下,启动代码中定义堆栈时,为什么没有把堆栈固定在RAM的尾部呢?


Stack_Size      EQU     0x00000400
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-4-26 11:27:28 | 显示全部楼层
之前就有几个坛友咨询这个问题,帖子找不到了,难道你们是一个学校的?

这个问题是这样的,用户不去干预的情况下,堆空间和栈空间是不会去放在RAM末尾的,从低地址到高地址依次是全局变量(静态变量),堆空间,栈空间。



回复

使用道具 举报

1

主题

22

回帖

25

积分

新手上路

积分
25
发表于 2019-4-26 16:06:37 | 显示全部楼层
好问题,如果栈地址放的很高,栈溢出后暂时不会覆盖有用数据,是不是还可以继续跑?
回复

使用道具 举报

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
发表于 2019-4-26 22:15:41 | 显示全部楼层
蒋武锋_uh464 发表于 2019-4-26 16:06
好问题,如果栈地址放的很高,栈溢出后暂时不会覆盖有用数据,是不是还可以继续跑?

程序都跑偏了      直接进入 硬件异常了。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-4-29 08:53:42 | 显示全部楼层
这跟设计艺术有关,建议尊重设计。

例如:EEPROM,如果读数据会自动地址增加,这样读速度会快一些。不排除有些绕开专利技术习惯,读一个数据地址减一。
例如:平台读第一分区,第一页的数据很快很简单。那么全局变量、堆栈放在那里会有特效。平台区别另说,或者半导体专业创新设计可以探讨 尾地址读写更快,更简便。

还有一个信息,计算机做加法运算比做减法运算哪个快? 对应地址自动递增好还是递减好?

纯粹交流信息,希望能给到你一丁点 Idea。
Releasing your creativity
回复

使用道具 举报

1

主题

109

回帖

112

积分

初级会员

固件開發工程師

积分
112
QQ
发表于 2019-4-29 09:45:58 | 显示全部楼层
也可以放在尾部的。
只不过放在尾部的话,不同RAM Size的芯片,位置不同。这里要特别获取RAM Size,写起来不方便。
回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2019-4-29 16:28:33 | 显示全部楼层
----- 发表于 2019-4-29 09:45
也可以放在尾部的。
只不过放在尾部的话,不同RAM Size的芯片,位置不同。这里要特别获取RAM Size,写起来 ...

明白了,谢谢回复
回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2019-5-5 11:34:06 | 显示全部楼层
再请问下,如果直接把__initial_sp 赋值在RAM的尾部,因为堆栈空间固定在RAM尾部了,是不是分配堆栈的代码“Stack_Mem       SPACE   Stack_Size” 都可以不需要了呢?
回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2019-5-5 18:02:16 | 显示全部楼层
跟放不放在尾部没有关系,完全是link文件指定的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 20:26 , Processed in 0.173184 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表