Tencent/libco

coctx_swap函数:leaq 8(%rsp), %rsp

Opened this issue · 0 comments

leaq 8(%rsp), %rsp
pushq 72(%rsi)

movq 64(%rsi), %rsi
ret

如果调入协程是新协程,上述代码会切换到新协程,并且使rsp指向ctx->ss_sp + ctx->ss_size,充分利用协程栈空间;
如果调入协程不是新协程,是个已经执行过的协程,本次只是重新调入而已,那么上述代码(leaq 8(%rsp), %rsp)是不是破坏了栈的完整性?是不是覆盖了rsp原有的数据??

希望有空解释下