本人是刚刚参加工作的学生,使用keil编译器已经半年多了,在这半年的时间里,我总结了keil的使用的一些心得,希望和大家分享一下,另外请高人点拨一下,由于我不是计算机专业的,所以对于编译原理和操作系统等高深的课程没有接触过,总是认为以下提到的一些规律都是有理论根据的,希望高人指点。
现在的存储器已经不像七八年前那样昂贵了,但是ram相对于rom和eeprom的价格还是不可同样看待的,所以程序中节省内存在现在看来还是非常关键的。原因有以下几点:
1.ram的存取速度相对于eeprom的存取速度要快很多倍,不在一个数量级上,主要是因为eeprom的存储要想写入就必须先擦除,而且eeprom的擦出需要成块擦除(这是由于eeprom的擦除原理是场效应管的栅极上电擦除的,为了节省成本厂家一般都是8Bytes/page 64Bytes/page),所以使用ram来处理中间的数据是能够符合速度要求的。
2.无论是xram还是eeprom都是外部存储器,在负值时都要用到16bit地址空间(8位机),这样无形中就增大了程序的code的体积并且使得速度上也受到影响,所以尽量把indata区的ram用到极限是非常有意义的。
本人总结了一些节省内存的规律,提供给大家讨论一下,看看是否可行。
1.内存分配的基本原理:
keil与其他的c语言编译器我认为从内存分配的原理上是基本相同的。总结起来,其实很简单,就是选最长的路径进行编译(话糙理不糙),例如下面的两段程序
program 1:
unsigned char a();
void b();
void main()
{
uns