Tag Archives: ARM

ARM中CODE、RO、RW、ZI的含义

当编译一个ARM程序后,会出现Code=…  RO-data= …  RW-data=…  ZI-data=…  的提示报告,如:

Program Size: Code=976 RO-data=344 RW-data=4 ZI-data=612  

那么这些数据的含义究竟是什么呢?

CODE:代码区占用大小,即程序指令的大小;

RO:只读变量占用大小,用于保存常量和查询表的大小;

RW:读写变量占用大小,是已初始化为非0的变量的大小;

ZI:全零变量占用大小,是初始化为0的变量,或者未初始化的变量(编译器自动将这些变量清0)

实际使用的ROM和RAM大小是:

ROM = CODE + RO + RW

RAM =  RW + ZI

这里可能会有一个疑问,就是RW为什么也会占用ROM空间?这是因为数据不会凭空产生,对于有明确初始值的变量,需要事先存储该变量的初始值,在程序启动的最开始阶段,这些变量被初始化并移至RAM区。