gpt4 book ai didi

linux内核开发

转载 作者:IT王子 更新时间:2023-10-29 00:14:21 28 4
gpt4 key购买 nike

我目前正在阅读 Robert Love 的“Linux Kernel Development”,但我不明白这段汇编在做什么。

基本上,在每个进程内核堆栈中,都​​有一个位于堆栈末尾的struct thread_info。现在,在 x86 架构上,我们显然可以通过使用以下程序集来获取它(假设 8KB 堆栈大小)

movl $-8192, %eax
andl %esp, %eax

所以基本上是将堆栈指针与 0xfffffe000 进行 AND 运算。我对这里发生的事情感到困惑?我不明白为什么屏蔽 %esp 的最低有效 13 位会将我们带到该结构。我知道一旦解释清楚我会觉得自己很愚蠢,但这让我很烦恼。

谢谢。

最佳答案

栈是向下增长的,所以栈尾是栈中的最低地址,也是结构体的起始地址。堆栈以 8KB 的倍数存储。因此,删除 13 个最低有效位将获得堆栈的最低地址,从而获得结构的开始。这有意义吗?

关于linux内核开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4297624/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com