当前位置: 技术问答>linux和unix
内核新学求助:move_to_user_mode 宏没有看懂
来源: 互联网 发布时间:2017-01-24
本文导语: 赵博士在书中做了注释,我还是没有看懂。请高手指点一下。谢谢! #define move_to_user_mode() __asm__ ("movl %%esp,%%eaxnt" "pushl $0x17nt" //“首先将堆栈段选择符(SS)入栈”, 这里入栈的为什么是个直接数 0x17? ...
赵博士在书中做了注释,我还是没有看懂。请高手指点一下。谢谢!
#define move_to_user_mode()
__asm__ ("movl %%esp,%%eaxnt"
"pushl $0x17nt" //“首先将堆栈段选择符(SS)入栈”, 这里入栈的为什么是个直接数 0x17?
"pushl %%eaxnt"
"pushflnt"
"pushl $0x0fnt" //“将Task0代码段选择符(cs)入栈”, 这里入栈的是直接数0x0f怎么代表了Task0代码段选择cs?
"pushl $1fnt"
"iretn"
"1:tmovl $0x17,%%eaxnt"
"movw %%ax,%%dsnt"
"movw %%ax,%%esnt"
"movw %%ax,%%fsnt"
"movw %%ax,%%gs"
:::"ax")
|
这个你看一下16位段选择子的构成就明白了.看看SS段和CS段在段描述符表中的入口位置.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。