今天小编要和大家分享的是嵌入式技术相关信息,接下来我将从嵌入式世界里,堆栈的作用和意义,001 08 04_08 04 07 图片_百度百科这几个方面来介绍。

嵌入式技术相关技术文章嵌入式世界里,堆栈的作用和意义001 08 04_08 04 07 图片_百度百科

嵌入式技术相关技术文章嵌入式世界里,堆栈的作用和意义

栈这种结构在嵌入式里其实是非常常用的,比如函数调用与返回就是典型的栈应用,虽然很多时候栈都是 CPU 系统在自动管理,我们只需要在链接文件里分配栈大小以及栈存放位置,但稍微了解一下栈的原理会更加利于我们去理解嵌入式代码执行机制,以及帮助我们进一步去调试。

1. 何为堆栈?

堆 HEAP 与栈 STACK 是两个不同概念,其本质上都是一种数据结构。

栈是一种按数据项排列的数据结构,只能在一端(栈顶 top)对数据项进行插入和删除,其符合后进先出(Last-In / First-Out)原则。栈(os)一般是由编译器自动分配释放,其使用的是一级缓存。

堆也是一种分配方式类似于链表的数据结构,其可以在任意位置对数据项进行操作。堆(os)一般由程序员手动分配释放,其使用的是二级缓存。

在嵌入式世界里,堆栈一般指的仅是栈。

2. 作用与意义

在 MCU 中,栈这种结构一般被 cpu 和 os 所使用。

在 cpu 裸机中使用情况分两种:一、主动进行函数调用时,STACK 用以暂存下一条指令地址、函数参数、函数中定义的局部变量;二、硬中断来临时,暂存当前执行的现场数据(下一条指令地址、各种缓存数据),中断结束后,用以恢复。