发新帖我要提问
12
返回列表
打印
[51单片机]

小i解惑之一:使用死循环陷阱

[复制链接]
楼主: icecut
手机看帖
扫描二维码
随时随地手机跟帖
21
tuzihog| | 2014-9-29 09:10 | 只看该作者 回帖奖励 |倒序浏览
关注一下

使用特权

评论回复
22
icecut|  楼主 | 2014-9-29 09:32 | 只看该作者
laoxu 发表于 2014-9-28 18:13
这个俺的一个产品程序的反汇编,由于用到大量的全局变量,堆栈指针往后移,由图中可看到,初始化的SP=0xa4 ...

嗯。全局变量的确需要预留内存。我继续更正首贴。

使用特权

评论回复
23
icecut|  楼主 | 2014-9-29 09:33 | 只看该作者
hgjinwei 发表于 2014-9-28 22:42
这个返回到哪,是可以预设的。

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

等你遇到动态**你代码的人一切就有了意义。

使用特权

评论回复
24
icecut|  楼主 | 2014-9-29 09:39 | 只看该作者
不亦心 发表于 2014-9-29 01:50
稍微玩一下汇编就不会得出这种解惑了,,,,

目的不是这么少。。。。如果我逆序来讲,先把大家迷住。你们就不觉得简单了。

使用特权

评论回复
25
wsnsyy| | 2014-9-29 10:27 | 只看该作者
看不懂,各位可以說的通俗一點嗎

使用特权

评论回复
26
原野之浪| | 2014-9-29 13:07 | 只看该作者
原野之浪 发表于 2014-9-28 18:28
类似的帖子我马甲好想以前发过。就是flash跑一圈转回来了。小i,最近对单片机有兴趣。不是只玩linux么 ...

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

*(FLASH ADDRESS);

这个不能搞定么?

使用特权

评论回复
27
NWPU_CHEN| | 2014-9-29 13:31 | 只看该作者
不错的帖子,不过没有研究那么深

使用特权

评论回复
28
icecut|  楼主 | 2014-9-29 13:41 | 只看该作者
NWPU_CHEN 发表于 2014-9-29 13:31
不错的帖子,不过没有研究那么深

面对初学者的帖子。你多会那么一点就值了

使用特权

评论回复
29
icecut|  楼主 | 2014-9-29 13:44 | 只看该作者
原野之浪 发表于 2014-9-29 13:07
你的目标是返回想要的位置 ,是什么意思?

*(FLASH ADDRESS);

不是读写是执行。这样会优雅一点。比如你在代码里有一段不想交付,那就做成二机制放进指定位置。最后ret过去。编译器不知道。阅读的人也看不懂。

使用特权

评论回复
30
xyz549040622| | 2014-10-1 16:13 | 只看该作者
icecut 发表于 2014-9-29 13:44
不是读写是执行。这样会优雅一点。比如你在代码里有一段不想交付,那就做成二机制放进指定位置。最后ret ...

我见过真有这么做的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则