程序编译好后可简单分为代码段和数据段。数据段又分为三个段:(1)只读数据段,ro data,存放const修饰的变量;(2)读写数据段,rw data,存放已经初始化的全局变量和已初始化的静态变量;(3)未初始化数据段,bss data,存放没有初始化的全局变量和未初始化的静态变量和已初始化为0的变量。
程序所占用的空间(flash大小)=code+ro data+rw data;bss data不占用flash空间,在程序运行时,在ram里直接将其值全部清零即可。
关于x86架构的pc机和嵌入式系统,其运行程序时的流程是不一样的,x86系统程序和数据放在一起,即pc启动时从flash读取程序道ram里,然后从ram读取程序运行,而嵌入式大部分是哈佛结构,其查程序和数据是分开的,启动时从flash读取程序,从ram读取数据,因为ram比较贵,嵌入式系统是简小并且价格低廉的,所以若是ram大就会增大成本。
代码段和数据段
最新推荐文章于 2021-05-21 21:31:05 发布