一、概念

.bss段

存放没有初始化或者初始化为0的全局变量或者静态局部变量。

.data段

存放初始化为非0,且非const属性的全局变量或者静态局部变量。

.rodata段

存放字符串和const常量,一般只放在ROM中。

二、实验

1.工具链:

GNU Tools ARM Embedded(win)

2.C代码:

int im_data = 3;
int im_bss;
int im_bss_0 = 0;
const int im_rodata = 1;
static int im_data_sta = 1;
static int im_bss_sta_0 = 0;
static int im_bss_sta;
char *im_rodata_str = "length_10";int main(void){static int im_data_func = 1;static int im_bss_func;return 0;
}

3.测试过程

1>make 产生elf文件

2>arm-none-eabi-objdump -t elf 打印符号列表,如下

3>分析:

初始化为非零的全局变量和静态变量有:im_data、im_data_sta、im_data_func,它们存放在.data内存段中,im_rodata_str是指针型全局变量,也存放在.data中。

初始化为0和未初始化的的全局变量和静态变量有:im_bss、im_bss_0、im_bss_sta_0、im_bss_sta、im_bss_func,它们被存放在.bss段中。

字符串"length_10"和const常量im_rodata被存放在.rodata中("length_10"未引出符号表,但被存放在rodata中)。

单片机内存分配之 .data .bss .rodata段相关推荐

  1. linux代码段映射,bss,data,text,rodata,堆,栈,常量段与其各段在物理存储中关系

    本文想从linux出发[目前还想可不可以从51单片机出发],解答程序代码和各种数据结构是如何存储(映射)到存储区的. 目前未完成整理,还是初稿的想法.bss段: BSS段(bsssegment)通常是 ...

  2. bss,data,text,rodata,堆,栈,常量段

    //红色部分为问题部分 section 结构 SECTIONS { ... secname start BLOCK(align) (NOLOAD) : AT ( ldadr )   { content ...

  3. 汇编中bss,data,text,rodata,heap,stack段的作用

    原文:https://blog.csdn.net/bxd1314/article/details/38433837 Table of Contents bss段: data段: text段: roda ...

  4. Linux内存管理(.text .data .bss)

    Linux内存管理 orisun@orisun-desktop:~/Program$size memory2 text data bss dec hexfilename 2074 284 16 237 ...

  5. 从RDA5981A/B/C编译后map文件和datasheet分析内存分配情况

    先查看RDA5981的datasheet, 如下图,RDA5981芯片内部有三个RAM区域, I_SRAM,D_SRAM,I_cache, 还可以外挂PSRAM, 内存映射图解释: 在编译目录BUIL ...

  6. JVM之JVM内存区域与内存分配(转载)

    2019独角兽企业重金招聘Python工程师标准>>> 先来看看JVM运行时候的内存区域 大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区),He ...

  7. 深入理解JVM内存区域与内存分配

    前言:这是一篇关于JVM内存区域的文章,由网上一些有关这方面的文章和<深入理解Java虚拟机>整理而来,所以会有些类同的地方,也不能保证我自己写的比其他网上的和书本上的要好,也不可能会这样 ...

  8. 【C语言天天练(二四)】内存分配

    引言: 对于C语言程序,了解它执行时在内存中是怎样分配的对于我们理解它的执行机制是很实用的.以下就总结一下C语言程序的一些内存分配知识. 一 一段C程序.编译连接后形成的可运行文件一般有代码段.数据段 ...

  9. 深入理解JVM之JVM内存区域与内存分配

    在学习jvm的内存分配的时候,看到的这篇博客,该博客对jvm的内存分配总结的很好,同时也利用jvm的内存模型解释了java程序中有关参数传递的问题. 博客出处: http://www.cnblogs. ...

最新文章

  1. 推荐系统超级公开课报名!
  2. Windows XP中防火墙后如何实现共享(图)
  3. 判断python模型是否安装的办法
  4. 机器学习:从入门到第一个模型
  5. java jpopupmenu事件_Java+Swing+常用事件和监听器接口
  6. python opencv轮廓提取_Python + Opencv2 实现轮廓提取,轮廓区域面积计算
  7. elasticsearch 客户端工具_ELK集群部署 - elasticsearch-7.9.3
  8. 对dropout的理解详细版
  9. Python的类实例属性访问规则
  10. php显示地址栏携带的错误信息_php-fpm搭建及加固
  11. Ubuntu18.04报错:bin/bash: prebuilts/misc/linux-x86/bison/bison: cannot execute binary file解决
  12. 集合set中的基数cardinality是什么意思
  13. python 删除字典数据,Python简单遍历字典及删除元素的方法
  14. 计算机逻辑门电路图,三态门逻辑电路图大全(三款三态门逻辑电路图)
  15. 16进制与二进制之间的转换
  16. 23是android版本几,关于sdk=23的android版本权限的问题
  17. java导出txt文件列对齐
  18. STM32F100X RCC_APB2Periph_AFIO--复用IO时钟的使用
  19. 微信抢红包算法实现(JAVA)
  20. word embedding(详细讲解word embedding)

热门文章

  1. Python+Vue计算机毕业设计威客任务平台系统083ul(源码+程序+LW+部署)
  2. HSC-1th大赛 writeup
  3. php验证输入 日本汉字、平假名、片假名
  4. git更改origin数据源
  5. 新版DocConvert虚拟打印机出来了!
  6. 微服务网关限流鉴权-wei-fu-wu-wang-guan-xian-liu--jian-quan
  7. 2023年郑州大学药物化学专业考研成功经验分享
  8. 4款绝赞的安卓小说app,免费且书源超强!
  9. 如何获取文本域(textarea) 的输入值
  10. day01 计算机基础和环境搭建