我们理解call原理,首先将返回地址压入栈中,之后执行调用。
因此,在一个函数开始部分,esp依旧是上一个栈帧的esp,此时esp指向返回地址。
这就意味着使用 mov ebx,esp,之后 [ebx]就是当前函数的返回地址。
我们应该意识到,SystemCall 就是通过这个 进入零环的,进入零环前将 mov ebx,esp。
因此,当进入零环时, _KTRAP_FRAME.ebx 就是保存着 esp 的地址,因此 [ _KTRAP_FRAME.ebx]为R3环的返回值。
这种概念你应该明确。