打印

函数嵌套的堆栈和中断堆栈是一个么?51的

[复制链接]
2148|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lastnew|  楼主 | 2008-5-28 15:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2008-5-28 16:12 | 只看该作者

都是同一堆栈

重入函数可以被多个任务调用,比如中断与主程序。。。

使用特权

评论回复
板凳
lastnew|  楼主 | 2008-5-28 17:21 | 只看该作者

谢楼上

仍然有个问题:

在startup.51文件中,如果指定可重入堆栈在xdata区,那么是否有系统栈和任务栈的区别了??因为SP是8位的哦

使用特权

评论回复
地板
computer00| | 2008-5-28 17:35 | 只看该作者

普通51不能使用xdata做为硬件栈。只能用内部RAM。

可重入函数的临时变量好象是分配在软件栈中的,不在硬件栈中。

返回地址和工作寄存器压栈时,才会到硬件栈中。

使用特权

评论回复
5
lastnew|  楼主 | 2008-5-28 22:50 | 只看该作者

00

软件栈怎么出入栈?应该不是push、pop吧?栈指针咋回事?

google上没有软件栈这个说法啊,不懂请教下

软件栈是编译器实现的么

使用特权

评论回复
6
lastnew|  楼主 | 2008-5-29 09:25 | 只看该作者

汇编出来的代码有这个

?C_XBP

应该就是软件栈的指针

使用特权

评论回复
7
lastnew|  楼主 | 2008-5-29 14:01 | 只看该作者

软件栈是编译器实现的么

还是没想清楚哦,哪位大哥指导下

使用特权

评论回复
8
HWM| | 2008-5-29 14:20 | 只看该作者

软件栈就是一个用纯软件实现的一个栈结构,相关软件部分

相关软件部分可能由编译器加入代码来实现,也可以自己“造一个”。说穿了栈只是一个数据结构而已,因为使用频繁所以才会在硬件上考虑加入相关栈指令——即硬件栈的实现。

使用特权

评论回复
9
ayb_ice| | 2008-5-29 19:52 | 只看该作者

软件堆栈由编译器实现

使用特权

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

本版积分规则

62

主题

352

帖子

0

粉丝