查看: 3741|回复: 16

[其他] 关于函数调用的堆栈空间

[复制链接]
  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
    发表于 2015-4-23 15:07:48 | 显示全部楼层 |阅读模式
    今天整理代码的时候看了下代码结构,发现我最长的函数调用竟然深达14层之多(如果不是我使用了宏定义和内联函数,估计更多):那么问题来了,我使用的是KL03平台,内存最大只有2K,为了合理使用内存,我该给堆栈分配多少空间大小呢?另外,在CortexM0+内核实现一个最简单的函数调用(无参数无返回数据),堆栈需要保存多少字节的内容呢?
    我知道答案 目前已有16人回答
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-20 10:55
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    24

    主题

    1189

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1642
    最后登录
    2022-3-21
    发表于 2015-4-23 15:45:44 | 显示全部楼层
    看里面有没有大数组 没有的话 基本100-200K够了吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
     楼主| 发表于 2015-4-23 16:03:56 | 显示全部楼层
    星星-418393 发表于 2015-4-23 15:45
    看里面有没有大数组 没有的话 基本100-200K够了吧

    我晕死,你先看看我的帖子内容,我的总量才只有2K
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-20 10:55
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    24

    主题

    1189

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1642
    最后登录
    2022-3-21
    发表于 2015-4-23 16:18:09 | 显示全部楼层
    sorry 除数组以外 是100-200个bytes 打错了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
     楼主| 发表于 2015-4-23 16:21:46 | 显示全部楼层
    星星-418393 发表于 2015-4-23 16:18
    sorry 除数组以外 是100-200个bytes 打错了

    那么第二个问题呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-20 10:55
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    24

    主题

    1189

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1642
    最后登录
    2022-3-21
    发表于 2015-4-23 16:22:27 | 显示全部楼层
    我感觉 堆栈就是变量总数大小在加上大小 R1~R12 LR 等就差不多了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-20 10:55
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    24

    主题

    1189

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1642
    最后登录
    2022-3-21
    发表于 2015-4-23 16:30:23 | 显示全部楼层
    对了 你没跑操作系统 如果纯函数调用 没返回值没参数的话 我个人认为就是ESP EBP LR 12个字节吧
    如果有参数有返回值  参数是放在R1-R12里面 根据编译器来定的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
     楼主| 发表于 2015-4-23 16:43:07 | 显示全部楼层
    星星-418393 发表于 2015-4-23 16:30
    对了 你没跑操作系统 如果纯函数调用 没返回值没参数的话 我个人认为就是ESP EBP LR 12个字节吧
    如果有参 ...

    如果这样的话,100到200Byte就不够用了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-20 10:55
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    24

    主题

    1189

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1642
    最后登录
    2022-3-21
    发表于 2015-4-23 16:44:13 | 显示全部楼层
    byte 是字节啊 怎么不够啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
     楼主| 发表于 2015-4-23 16:46:43 | 显示全部楼层
    星星-418393 发表于 2015-4-23 16:44
    byte 是字节啊 怎么不够啊

    我14层调用就超过150个了,再加上中断和临时变量中间变量怎么可能够用呢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-12 15:36 , Processed in 0.107086 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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