首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

内核新学move_to_user_mode 宏没有看懂

2012-03-15 
内核新学求助:move_to_user_mode 宏没有看懂赵博士在书中做了注释,我还是没有看懂。请高手指点一下。谢谢!#d

内核新学求助:move_to_user_mode 宏没有看懂

赵博士在书中做了注释,我还是没有看懂。请高手指点一下。谢谢!

#define move_to_user_mode() \
__asm__ ("movl %%esp,%%eax\n\t" \
  "pushl $0x17\n\t" \ //“首先将堆栈段选择符(SS)入栈”, 这里入栈的为什么是个直接数 0x17[i][/i]?
  "pushl %%eax\n\t" \
  "pushfl\n\t" \
  "pushl $0x0f\n\t" \ //“将Task0代码段选择符(cs)入栈”, 这里入栈的是直接数0x0f怎么代表了Task0代码段选择cs?[i][/i]
  "pushl $1f\n\t" \
  "iret\n" \
  "1:\tmovl $0x17,%%eax\n\t" \
  "movw %%ax,%%ds\n\t" \
  "movw %%ax,%%es\n\t" \
  "movw %%ax,%%fs\n\t" \
  "movw %%ax,%%gs" \
  :::"ax")


[解决办法]
这个你看一下16位段选择子的构成就明白了.看看SS段和CS段在段描述符表中的入口位置.

热点排行