我正在为纯粹的教育目的实现用户级线程库。 当我从一个线程切换到另一个线程时,我需要将本地寄存器保存到堆栈中。我已经完成了以下工作。
.text
.global machine_switch
machine_switch:
# address of the new sp is arg1
# address of the current tcb is arg2
# I assume that fist location of tcb is
# used to store the thread's sp.
mov 0x4(%esp), %eax #new thread
mov 0x8(%esp), %ecx #old thread
mov %ecx,%esp
push %ebp
push %esi
push %edi
push %edx
我不确定我是否已正确完成。如果我是正确的,现在我需要将指向此堆栈的指针保存回线程控制块。我该怎么做?