- 论坛徽章:
- 16
|
本帖最后由 embeddedlwp 于 2011-10-17 09:14 编辑
回复 9# asuka2001
您帖的是汇编版的,- #define switch_to(prev,next,last) do { \
- unsigned long esi,edi; \
- asm volatile("pushfl\n\t" \
- "pushl %%ebp\n\t" \
- "movl %%esp,%0\n\t" /* save ESP */ \
- "movl %5,%%esp\n\t" /* restore ESP */ \
- "movl $1f,%1\n\t" /* save EIP */ \
- "pushl %6\n\t" /* restore EIP */ \
- "jmp __switch_to\n" \
- "1:\t" \
- "popl %%ebp\n\t" \
- "popfl" \
- :"=m" (prev->thread.esp),"=m" (prev->thread.eip), \
- "=a" (last),"=S" (esi),"=D" (edi) \
- :"m" (next->thread.esp),"m" (next->thread.eip), \
- "2" (prev), "d" (next)); \
- } while (0)
复制代码 请教从这个嵌入式汇编中哪里看出的- movl prev, %eax // prev保存在eax,即(%eax)代表prev->
- movl next, %edx // next保存在edx,即(%edx)代表next->
复制代码 请指点! |
|