小编tbh*_*tbh的帖子

linux内核开发

我目前正在阅读Robert Love的"Linux内核开发",我不明白这个程序集正在做什么.

基本上,在每个进程内核堆栈中,都​​有一个struct thread_info驻留在堆栈末尾的内核堆栈.现在,在x86架构上,我们可以通过使用以下程序集来抓住这个(假设8KB堆栈大小)

movl $-8192, %eax
andl %esp, %eax
Run Code Online (Sandbox Code Playgroud)

所以基本上通过0xffffe000对堆栈指针进行AND运算.我很困惑这里发生了什么?我不明白为什么掩盖最不重要的13位%esp将我们带入结构体.我知道一旦得到解释我就会感到愚蠢,但这让我烦恼.

谢谢.

linux assembly kernel

9
推荐指数
1
解决办法
817
查看次数

标签 统计

assembly ×1

kernel ×1

linux ×1