;tr已经初始化,esp0已经赋值
;时钟中断处理程序
;8259A时钟中断处理程序
pushad
push ds
push es
push fs
push gs
mov al , EOI
out NIT_M_CTL,al ;中断处理结束
;;;;;;;这里没有保存esp0,当发生下次时钟中断时候,使用的esp0是什么值?此时tss中的以前保存的esp0不能在使用么?
pop gs
pop fs
pop es
pop ds
popad
iretd
没有保存esp0,当发生下次时钟中断时候,使用的esp0是什么值?此时tss中的以前保存的esp0不能在使用么?不是没有改变tss中esp0的值么。
TSS中的静态字段只是用于发生了由外层向内层特权级变换的转移的时候,CPU会用静态字段也就是内层栈保存区的三组栈寄存器中的一组来初始化目标特权级层。
但是如果这个特权级变换的转移是由任务切换导致的,就不会使用那三组内层栈寄存器组,而是使用通用寄存器esp字段来初始化目标特权级层。