实时嵌入式软件测试工具的研究
ags寄存器的内容自动弹出。为了实现任务的调度,新的时钟中断服务函数要完成两项工作。首先,它将除了栈指针(SP)和栈段(SS)寄存器之外的所有寄存器的值都存到栈中。(SP和SS的值存在另外的位置)。其次,它改变SS和SP寄存器的值,使它们指向另一个任务的堆栈。因此,当ISR返回时,新的任务的堆栈被弹出到各寄存器中,这使得机器的状态是针对新的任务的。由于IP中也是弹出的寄存器的值,因此新任务就开始执行。
interrupt 类型
本文链接地址:http://www.oyaya.net/fanwen/view/141093.html
在任务运行前,它必须按一定方式使堆栈初始化,这样使得当第一个时间片到来时,从栈中弹出的值能够使该任务从头开始运行。因此,任务的堆栈必须初始化并存放正确的寄存器值,同时指令指针也必须指向程序中的第一条指令。
2.2
调度内核实现所用到的数据结构interrupt类型时,它告诉编译器自动保存所有寄存器(sp和ss除外)的值,并且IRET指令终止该函数。每当进入到interrupt函数时,执行下列指令: push ax, push bx, push cx, push dx, push es, push ds当说明一个函数为
push si,
push di, push bp 发生中断时,CPU自动将Flags,cs 《实时嵌入式软件测试工具的研究(第3页)》