在Win AVR中的帮助文件 avr-libc Manual中的Related Pages中的Frequently Asked Questions,其实有一个问题是"What registers are used by the C compiler?" 回答了编译器所需要占用的寄存器。一般情况下,编译器会先用到以下寄存器
1 Call-used registers (r18-r27, r30-r31): 调用函数时作为参数传递,也就是用得最多的寄存器。
//SREG 在任务中,开启全局中断
for(i=0;i<14;i++) //在 avr-libc 中的 FAQ中的 What registers are used by the C compiler?
*Stack--=i; //描述了寄存器的作用
TCB[TaskID].OSTaskStackTop=(unsigned int)Stack; //将人工堆栈的栈顶,保存到堆栈的数组中
OSRdyTbl|=0x01<
}
//SREG 在任务中,开启全局中断
for(i=0;i<14;i++) //在 avr-libc 中的 FAQ中的 What registers are used by the C compiler?
*Stack--=i; //描述了寄存器的作用
TCB[TaskID].OSTaskStackTop=(unsigned int)Stack; //将人工堆栈的栈顶,保存到堆栈的数组中
OSRdyTbl|=0x01<
}
//SREG 在任务中,开启全局中断
for(i=0;i<14;i++) //在 avr-libc 中的 FAQ中的 What registers are used by the C compiler?
*Stack--=i; //描述了寄存器的作用
TCB[TaskID].OSTaskStackTop=(unsigned int)Stack; //将人工堆栈的栈顶,保存到堆栈的数组中
OSRdyTbl|=0x01<
}
//SREG 在任务中,开启全局中断
for(i=0;i<14;i++) //在 avr-libc 中的 FAQ中的 What registers are used by the C compiler? *Stack--=i; //描述了寄存器的作用 TCB[TaskID].OSTaskStackTop=(unsigned int)Stack; //将人工堆栈的栈顶,保存到堆栈的数组中 OSRdyTbl|=0x01<prio) //当要当前任务的优先级低于重置位的任务的优先级
OSSched(); //从新调度 //从新调度
}