您的位置:首页 > 其它

A3、限制函数内部循环使用局部变量的数目,最多不超过12个

2013-03-30 21:55 253 查看
应该尽量限制函数内部循环所用局部变量的数目,最多不超过12个,这样,编译器就可以把这些变量都分配给ARM寄存器;编译器会试图对C函数中的每一个局部变量分配一个寄存器。如果几个局部变量不会交迭使用,那么编译器会对它们分配同一个寄存器。当局部变量多于可用的寄存器时,编译器会把多余的变量存储到堆栈。由于这些变量被写入了存储器,所以被称为溢出或者替换(swapped out)变量,就像虚拟存储器的内容被替换到硬盘一样。与分配在寄存器中的变量相比,对溢出变量的访问要慢得多。

解决多变量问题:将多个相关的参数组织到一个结构体中,传递一个结构体指针来代替多个参数。

typedef struct{

char *Q_start,

char *Q_end,

char *Q_ptr,

}Queue;

void queue_bytes(Queue *queue, Char *data,unsigned int N)

{

Char * Q_ptr = queue->Q_ptr;

Char * Q_end= queue->Q_end;

do

{

*(Q_ptr ++) = * (data ++);

if (Q_ptr == Q_end)

{

Q_ptr = queue -> Q_start;

}

}while( -- N);

queue -> Q_ptr = Q_ptr;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐