我在 xv6 中遇到了一个我无法理解的上下文切换代码片段。页面如下:
我无法理解第 8、9、10 行的作用。这就是我所拥有的:
mov 4(%esp) %eax
因为 %esp 是堆栈指针,所以 (%esp) 将我们带到堆栈本身。和 4(%esp) 将 4 个内存地址单元带入堆栈深处。 (换句话说,旧指针)
这是正确的理解吗?
但是这个堆栈是什么?这是 A 的内核堆栈吗?我们是否正在保存指向 A 的堆栈的指针?
现在第 9 行:
popl 0(%eax)
我的理解是我们从某个堆栈中弹出一个双字(可能与第 8 行中的堆栈相同?),然后我们将该双字值存储到 0(%eax) 中。但是 0(%eax) 不就是‘旧指针’指向的地方吗?
如果有人能开导我,我将不胜感激!
谢谢