回复:局部储存区L覆盖到哪里。

Vanilla Coffee

  • 帖子

    151
  • 精华

    0
  • 被关注

    2

论坛等级:游士

注册时间:2004-10-21

普通 普通 如何晋级?

发布于 2004-11-23 22:39:18

0楼

关于L存储器,我的看法:

传递给子程序的局部变量是放在程序调用堆栈中的,每次调用子程序时,都会为其分配堆栈空间,所以每个子程序都会有自已的变量空间,互相不会有任何影响.

由于系统在分配堆栈时只是移动栈顶指针,并没有将所分配的空间清零,在新分配的空间里存储着以前使用堆栈时遗留的无用数据,由于遗留下的数据无法追朔其来源,也就是说遗留下的值可能是任何值,所以说L空间在未初始化时包含无效数据.

子程序在返回时,所占用的堆栈空间将会被系统回收,因此在子程序返回后L变量值就丢失了.


至于主程序与子程序之间的参数传递,与编译系统有关,一般在一定条件下(参数的个数及数据类型)会通过CPU的寄存器传递,不符合条件则有可能通过固定内存地址或堆栈传递.不过这与使用无关,不必深究它究竟用什么方法传递.

这是小弟学单片机得出的一点理解,如有错误请高手指正.
希望多交些同行的朋友。我的200/300技术交流群10671799
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33277条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。