hjz007 发表于 2014-2-13 17:41
在放变量的堆栈后面入栈的就是寄存器了,OS返回的时候,存放变量的堆栈又没改变过。
你买一套我的开发板 ...
OS返回的时候,存放变量的堆栈又没改变过,既然存放变量的栈没有改变过,又何来之保存任务的局部变量?直接恢复SP指针就行了,另外,当离开函数时,编译器会释放栈,而栈是存放局部变量的,也就是说,正在执行函数时,发生任务切换,离开函数体,由于离开了函数体,编译器可能在其他任务中使用函数体的栈(即存放变量的栈还是会变化的),如果OS不保护栈中的局部变量,返回时将出现错误,所以我觉得要把函数中使用的局部变量都要保存在任务栈中。不知道我这样理解对不对。 |