将堆栈指针保存到程序集中的线程控制块

时间:2013-04-04 17:24:38

标签: c multithreading assembly x86

我正在为纯粹的教育目的实现用户级线程库。 当我从一个线程切换到另一个线程时,我需要将本地寄存器保存到堆栈中。我已经完成了以下工作。

.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

我不确定我是否已正确完成。如果我是正确的,现在我需要将指向此堆栈的指针保存回线程控制块。我该怎么做?

0 个答案:

没有答案