+ -
当前位置:首页 → 问答吧 → linux-0.00head.s中堆栈段的疑问

linux-0.00head.s中堆栈段的疑问

时间:2011-07-11

来源:互联网

linux-0.00中在控制权转移到任务0中是由于特权级0的代码不能直接把控制权转移到特权级3的代码中执行
所以要设置堆栈段有一段代码:
栈中营造中断返回时的场景。
57pushl $0x17 # 把任务0当前局部空间数据段(堆栈段)选择符入栈。
58pushl $init_stack # 把堆栈指针入栈(也可以直接把ESP入栈)。
59pushfl # 把标志寄存器值入栈。
60pushl $0x0f # 把当前局部空间代码段选择符入栈。
61pushl $task0 # 把代码指针入栈。
我的疑问是在设置这段堆栈段时的顺序问题。为什么是先数据段进栈然后是标志寄存器,然后是代码段
程序转移时堆栈段保存的顺序也是这样吗
具体的保存的堆栈段的结构是什么?
GOOGLE实在查不到啦
很多教材只说啦保存的内容,并没有说明在保存时的详细系结构怎样
求高手解答

作者: ccccdddxxx   发布时间: 2011-07-11

试试用bochs这两个调试命令看看

dump_cpu可以看cpu状态
print-stack可以看当前堆栈数据

作者: ww2000e   发布时间: 2011-07-11