进程描述符存放在大小为8k的进程栈的顶部(低地址, intel系统中栈是由高地址向低地址伸展的). 而esp寄存器存放着当前进程的栈基址. 所以将esp中的指针的低13位(8k)清零即可得到当前进程描述符的地址.
把嵌入汇编写成AT&T汇编如下:
movl $0xffffe000 %ecx
andl %esp %ecx
movl %ecx current
Linux内核中GET_CURRENT()函数
最新推荐文章于 2024-09-14 21:15:16 发布
本文介绍了如何通过清零ESP寄存器中的低13位来获得当前进程描述符的地址,该地址位于进程栈的顶部(低地址),适用于Intel系统。
2193

被折叠的 条评论
为什么被折叠?



