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

应该尽量限制函数内部循环所用局部变量的数目,最多不超过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;

}

你可能感兴趣的:(编程语言)