我试图了解有关 8051 MCU 架构内存布局的一些基本概念。如果有人能给我一些澄清,我将不胜感激。
因此,对于 8051 MCU,我们有几种类型的存储器:
IRAM - (idata) - 用于通用寄存器和 SFR
PMEG - (code) - 用于存储代码 - (FLASH)
扩展数据
问题:
那么堆栈实际上位于哪里?我假设在 IRAM (idata) 中,但它非常小 (30-7Fh) - 79 字节
堆栈有什么作用?
现在,一方面,我读到它在我们调用函数时存储返回地址(例如,当我调用函数时,返回地址存储在堆栈上并且堆栈指针递增)。
http://www.alciro.org/alciro/microcontroladores-8051_24/subrutina-subprograma_357_en.htm
另一方面,我读到堆栈存储函数中的局部变量,一旦我们从该函数返回,这些变量就会被“删除”。 http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html
如果我使用动态内存分配(堆),该内存是否始终保留在片外 RAM(xdata)中,还是取决于编译器/优化?