打印

关于freescale单片机的进出堆栈问题

[复制链接]
1970|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
530991163|  楼主 | 2011-11-19 08:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家好:
        问一下关于堆栈的问题啊,比如说程序正在运行,这时发生了一个中断(自己定义了一个堆栈),我将自己定义的这个堆栈的栈顶(堆栈向上生长)的地址赋值给CPU的SP, 那么CPU会自动将相应的寄存器存入这个堆栈中吗?我的意思就是当给SP赋值之后,进出栈的操作是CPU进行的还是需要人为地操作。
        请大家教教我啊~~

相关帖子

沙发
ayb_ice| | 2011-11-19 08:42 | 只看该作者
堆栈肯定是硬件自动动作的,模拟堆栈靠软件自己维护
你这只是重新初始化了堆栈的初值
这种想法无语

使用特权

评论回复
板凳
lishutong| | 2011-11-19 10:31 | 只看该作者
有的CPU是自动压栈,比如Cortex内核的芯片;有的是需要手动压栈的,像ARM7.
你那种做法只是自己给SP赋了个值而已。楼主,你还是先好好看看用的 那颗CPU的中断处理过得是什么样的再来问吧

使用特权

评论回复
地板
530991163|  楼主 | 2011-11-21 20:38 | 只看该作者
3# lishutong
您好,我用的是freescale的16位单片机,是自动进出栈操作,堆栈大小为0x100,默认地址为0x2000~0x20FF,但我发现堆栈指针总是指向0x20FD,而不是0x20FF,您知道是为什么吗?谢谢指教~~(后三个字节内容如图所示

使用特权

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

本版积分规则

个人签名:比较无助~~

25

主题

116

帖子

1

粉丝