而为速度作出的牺牲是,为了给每个任务都分配一个私有堆栈,而占用了较多的内存.
作为补偿,多任务更容易安排程序逻辑,从而可以节省一些用于控制的变量....1.覆盖:编译器为了节省内存,会给两个没用调用关系的函数分配同一内存地址作为变量空间....很显然,这些走法中,并不是每种都合理,有些傻子都会采用的,有些是傻子都不采会用的.用计算机的话来说就是,有的任务处理流程好,有的任务处理流程好,有的处理流程差....以上所说的,就是变量覆盖的问题.现在我们系统地说说关于变量覆盖.
变量分两种,一种是全局变量,一种是局部变量(在这里,寄存器变量算到局部变量里)....对于全局变量,每个变量都会分配到单独的地址.
而对于局部变量,KEIL会做一个覆盖优化,即没有直接调用关系的函数的变量共用空间.由于不是同时使用,所以不会冲突,这对内存小的51来说,是好事.