UBOOT-内存地址分析图


回想一下有关内存的四个区域的知识:在执行C语言程序时,该程序将只有“内存的四个区域”(堆区域,堆栈区域,全局区域和代码区域)。
其中,堆栈区域由编译器自动分配,用于存储函数的形式参数,局部变量等,并在执行函数时自动释放。
堆区域:程序员手动分配和释放(常见的malloc,free和其他涉及的功能)。
全局区域:存储全局变量和(静态)静态变量,其中细分了一个常量区域,字符串常量和其他常量也存储在此处。程序结束后,操作系统将释放该区域,
补充:全局变量和静态变量的存储放在一起,已初始化的全局变量和静态变量在一个区域中,未初始化的全局变量和未初始化的静态变量在另一相邻区域中。
代码区:一个存储程序执行代码的存储区,其中包含二进制代码。存储区通常是只读的。一些体系结构还允许代码段可写。实际上,它们存储代码框架或函数主体,即代码主体的位置。
上面的uboot内存映射如何对应于C的四个内存区域?全球区域如何构成?
代码区域= start.o + *(。text)
全局区域= *(。rodata *)+ *(。data)+ *(。u_boot_cmd)+ *(。rel *)+ *(。dynsym)+ *(。mmutable)+ *(。bss)
或
全局区域= *(。rodata *)+ *(。data)+空+ *(。bss)
重定位后的Uboot内存分布图:

本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-364151-1.html
请教一下
你有钱啊这么多存款
自从升了9
非一个国际领袖的作为