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

[复制链接]
 楼主| lastnew 发表于 2008-5-28 15:01 | 显示全部楼层 |阅读模式
当用到函数的可重入属性时又是怎么回事?<br /><br />谢谢
ayb_ice 发表于 2008-5-28 16:12 | 显示全部楼层

都是同一堆栈

重入函数可以被多个任务调用,比如中断与主程序。。。
 楼主| lastnew 发表于 2008-5-28 17:21 | 显示全部楼层

谢楼上

仍然有个问题:<br /><br />在startup.51文件中,如果指定可重入堆栈在xdata区,那么是否有系统栈和任务栈的区别了??因为SP是8位的哦
computer00 发表于 2008-5-28 17:35 | 显示全部楼层

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

可重入函数的临时变量好象是分配在软件栈中的,不在硬件栈中。<br /><br />返回地址和工作寄存器压栈时,才会到硬件栈中。
 楼主| lastnew 发表于 2008-5-28 22:50 | 显示全部楼层

00

软件栈怎么出入栈?应该不是push、pop吧?栈指针咋回事?<br /><br />google上没有软件栈这个说法啊,不懂请教下<br /><br />软件栈是编译器实现的么<br /><br />
 楼主| lastnew 发表于 2008-5-29 09:25 | 显示全部楼层

汇编出来的代码有这个

?C_XBP<br /><br />应该就是软件栈的指针
 楼主| lastnew 发表于 2008-5-29 14:01 | 显示全部楼层

软件栈是编译器实现的么

还是没想清楚哦,哪位大哥指导下
HWM 发表于 2008-5-29 14:20 | 显示全部楼层

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

相关软件部分可能由编译器加入代码来实现,也可以自己“造一个”。说穿了栈只是一个数据结构而已,因为使用频繁所以才会在硬件上考虑加入相关栈指令——即硬件栈的实现。<br />
ayb_ice 发表于 2008-5-29 19:52 | 显示全部楼层

软件堆栈由编译器实现

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

352

帖子

0

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

62

主题

352

帖子

0

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