[51单片机] 小i解惑之一:使用死循环陷阱

[复制链接]
4867|29
tuzihog 发表于 2014-9-29 09:10 | 显示全部楼层
关注一下
 楼主| icecut 发表于 2014-9-29 09:32 | 显示全部楼层
laoxu 发表于 2014-9-28 18:13
这个俺的一个产品程序的反汇编,由于用到大量的全局变量,堆栈指针往后移,由图中可看到,初始化的SP=0xa4 ...

嗯。全局变量的确需要预留内存。我继续更正首贴。
 楼主| icecut 发表于 2014-9-29 09:33 | 显示全部楼层
hgjinwei 发表于 2014-9-28 22:42
这个返回到哪,是可以预设的。

程序执行时,SP的生长是有规律的,不管main调用了多少子函数,调用深度有多 ...

等你遇到动态**你代码的人一切就有了意义。
 楼主| icecut 发表于 2014-9-29 09:39 | 显示全部楼层
不亦心 发表于 2014-9-29 01:50
稍微玩一下汇编就不会得出这种解惑了,,,,

目的不是这么少。。。。如果我逆序来讲,先把大家迷住。你们就不觉得简单了。
wsnsyy 发表于 2014-9-29 10:27 | 显示全部楼层
看不懂,各位可以說的通俗一點嗎
原野之浪 发表于 2014-9-29 13:07 | 显示全部楼层
原野之浪 发表于 2014-9-28 18:28
类似的帖子我马甲好想以前发过。就是flash跑一圈转回来了。小i,最近对单片机有兴趣。不是只玩linux么 ...

你的目标是返回想要的位置 ,是什么意思?

*(FLASH ADDRESS);

这个不能搞定么?
NWPU_CHEN 发表于 2014-9-29 13:31 | 显示全部楼层
不错的帖子,不过没有研究那么深
 楼主| icecut 发表于 2014-9-29 13:41 | 显示全部楼层
NWPU_CHEN 发表于 2014-9-29 13:31
不错的帖子,不过没有研究那么深

面对初学者的帖子。你多会那么一点就值了
 楼主| icecut 发表于 2014-9-29 13:44 | 显示全部楼层
原野之浪 发表于 2014-9-29 13:07
你的目标是返回想要的位置 ,是什么意思?

*(FLASH ADDRESS);

不是读写是执行。这样会优雅一点。比如你在代码里有一段不想交付,那就做成二机制放进指定位置。最后ret过去。编译器不知道。阅读的人也看不懂。
xyz549040622 发表于 2014-10-1 16:13 来自手机 | 显示全部楼层
icecut 发表于 2014-9-29 13:44
不是读写是执行。这样会优雅一点。比如你在代码里有一段不想交付,那就做成二机制放进指定位置。最后ret ...

我见过真有这么做的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部