当我们在编译ARM程序时,最终编译器会报告程序的大小:RO,RW,ZI,那么这些都是什么意思呢?
首先要知道的是程序(image)在ROM中就和文件在硬盘中一样的,由两部分组成,RO+RW,就是只读段和数据段,只读段又包含代码和常量,当系统启动,执行ROM中的代码,这时会将里面的数据(RW段)段搬运到RAM中,还有就是根据image文件中指定的ZI段(.bss段)中的起始地址和段大小,去清零RAM中的bss段。.bss段的起始地址和大小在程序连接阶段时就指定了。当这些工作完成后,才会去执行我们的代码的。全局变量的零初始化和未初始化都是放在bss段中的,这样的话就不会占用文件的大小了。
阅读(1927) | 评论(0) | 转发(0) |