请问编译完成以后,生成的数据都代表的是什么?比如 text ,data, bss, dec,hex这几个数据分别代表什么?

image.png

大神们请问 text ,data, bss, dec,hex这几个数据分别代表什么?能指点一下吗?

您好,text段是程序代码段,它是由编译器在编译连接时自动计算的,当你在链接定位文件中将该符号放置在代码段后,那么该符号表示的值就是代码段大小,编译连接时,该符号所代表的值会自动代入到源程序中。 data包含静态初始化的数据,所以有初值的全局变量和static变量在data区。bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。 dec(decimal的缩写,即十进制数)是text,data和bss的算术和。hex是指dec的十六进制值。


张工你好,有个小问题,data加上bss就是ram的使用大小吗?如果我用到了3kb的ram,而MCU只有2kb的ram,那么放不下的1kb内存MCU会怎样处理呢?


应该直接过不了编译吧


我的问题已经解决了,好像是多出来的1kb会覆盖掉前面的ram空间。我以前把变量放置在了data区,我很多变量都是像函数一样是固定不变的,比如lcd字库。将这些变量放置在text区就行了。我很久都没有搞单片机编程了,都忘了text,data,这些东西了。现在看来,ch32v003f4p6 20kb的Rom,加 2kb的Ram 对我这个项目完全够用了,text用了10644byte data用了64byte bss用了360byte。这个mcu速度很快。


只有登录才能回复,可以选择微信账号登录