硬汉嵌入式论坛

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

代码的RAM可以被确定吗?

[复制链接]

38

主题

82

回帖

196

积分

初级会员

积分
196
发表于 2018-2-22 10:20:18 | 显示全部楼层 |阅读模式
如果调用顺序: main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...)
那倒是可以确定,


但如果是:
for(uint32_t i=0; i < Cnt; i++)
  func();
由于Cnt是不确定的, 所以func()被调用了多少次是不确定的;


1. 这样不就无法确定RAM的开销了吗?
2. 变成汇编的话RAM是怎么分布的?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106761
QQ
发表于 2018-2-23 00:05:42 | 显示全部楼层
你举得这个例子
for(uint32_t i=0; i < Cnt; i++)
  func();

不存在RAM无法确定的情况,函数func();执行完毕,用的栈就释放掉了,下次调用,继续。只有递归调用和中断嵌套才无法确定。
回复

使用道具 举报

38

主题

82

回帖

196

积分

初级会员

积分
196
 楼主| 发表于 2018-3-18 11:35:00 | 显示全部楼层
明白!
所以应该尽量避免递归对吧
回复

使用道具 举报

38

主题

82

回帖

196

积分

初级会员

积分
196
 楼主| 发表于 2018-3-18 11:35:29 | 显示全部楼层
eric2013 发表于 2018-2-23 00:05
你举得这个例子
for(uint32_t i=0; i < Cnt; i++)
  func();

明白!
所以应该尽量避免递归对吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 08:23 , Processed in 0.261002 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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