需要帮助理解 Assembly 中的上下文切换代码

问题描述 投票:0回答:0

我在 xv6 中遇到了一个我无法理解的上下文切换代码片段。页面如下:

我无法理解第 8、9、10 行的作用。这就是我所拥有的:

mov 4(%esp) %eax
因为 %esp 是堆栈指针,所以 (%esp) 将我们带到堆栈本身。和 4(%esp) 将 4 个内存地址单元带入堆栈深处。 (换句话说,旧指针) 这是正确的理解吗?

但是这个堆栈是什么?这是 A 的内核堆栈吗?我们是否正在保存指向 A 的堆栈的指针?

现在第 9 行:

popl 0(%eax)
我的理解是我们从某个堆栈中弹出一个双字(可能与第 8 行中的堆栈相同?),然后我们将该双字值存储到 0(%eax) 中。但是 0(%eax) 不就是‘旧指针’指向的地方吗?

如果有人能开导我,我将不胜感激!

谢谢

assembly x86 operating-system cpu-registers
© www.soinside.com 2019 - 2024. All rights reserved.