您的位置 首页 培训

PIC硬件仓库与软件仓库

硬件堆栈:或许也可以称作系统堆栈,是位于片内RAM区。有人说,只要能使用PUSH,POP指令的单片机,都可以说含有硬件堆栈。这样的说法我个人…

硬件仓库:或许也能够称作体系仓库,是坐落片内RAM区。有人说,只需能运用PUSH,POP指令的单片机,都能够说含有硬件仓库。这样的说法我个人觉得不是很全面。经过指令进行压栈和出栈操作仅仅体系仓库中的一种操做。体系仓库还能够被隐含调用。例如,当调用子程序时,体系会自动把断点压入仓库,并不需要用户经过指令操作。体系仓库能够用来保存数据,或在使命子程序间传递数据。一般,栈底设在内存的高端,也便是把内存的最高一段空间划作栈区。这些都是向下成长栈。栈指针或许是专用的寄存器,也或许借用一通用寄存器。也有单片机是在数据区里齐截块作栈区,或许是向上成长,也或许是向下成长。

软件栈是你自己经过编码完成的。你在内存里齐截块作栈区,用一个变量作栈指针。

软件仓库:也能够说是用户仓库。能够被界说在内部或外部RAM中。它是用户为使命树立的专用数据仓库,与体系仓库的数据区是离隔的。它能够保存用户想保存的任何寄存器和状态字。

MPLAB C18的软件仓库是向上成长的仓库数据结构,编译器把函数参数和auto存储类别的局部变量放入软件仓库中。软件仓库与PICmicro单片机用于保存函数调用回来地址的硬件仓库不同。

栈指针(FSR1)一直指向下一个可用的仓库地址。MPLAB C18运用FSR2作为帧指针,这样能够快速拜访局部变量和参数。函数被调用时,其依据仓库的参数以自右向左的次序压入仓库,然后再调用这个函数。进入函数时,最左端的函数参数坐落软件仓库的顶端。

帧指针指向仓库中把依据仓库的参数和依据仓库的局部变量分离隔的地址。依据仓库的参数坐落帧指针的下方,而依据仓库的局部变量坐落帧指针的上方。刚进入C函数时,被调用函数把FSR2的值压入仓库,并把FSR1的值复制到FSR2,然后保存了调用函数的现场并初始化了当时函数的帧指针。然后函数依据仓库的局部变量的总长度被加到栈指针,并为这些变量分配仓库空间。依据仓库的局部变量和依据仓库的参数则依据其相对于帧指针的偏移量来引证。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/272619.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部