- 6
- 0
- 约4.37千字
- 约 5页
- 2017-07-10 发布于贵州
- 举报
嵌入式操作系统核原理和开发(线程切换)
嵌入式操作系统内核原理和开发(线程切换)
在操作系统中,线程切换是很重要的一个环节。如果没有线程的切换,我们如何才能实现多线程的并发运行呢?既然要实现切换,那么一方面,我们需要对原来的寄存器进行保存,另外一方面我们还要压入新堆栈的寄存器,这样才能实现线程切换的效果。在x86下面,因为切换线程的ip地址是固定的,所以切换所需要的寄存器也是固定的,一般来说保存eax、ebx、ecx、edx、esi、edi、ebp和esp即可。比如说,像这样,
[cpp] view plaincopy
void swap(UINT32* prev, UINT32* next)
{
__asm(push %%eax\n\t
push %%ebx\n\t
push %%ecx\n\t
push %%edx\n\t
push %%esi\n\t
push %%edi\n\t
push %%ebp\n\t
push %%esp\n\t
lea 0x8(%%ebp), %%eax\n\t
mov (%%eax), %%eax\n\t
mov %%esp
原创力文档

文档评论(0)