Blob
1 .globl _tas2 _tas:3 movl $0xCAFEBABE, %eax4 movl 4(%esp), %ecx5 xchgl %eax, 0(%ecx)6 ret8 .globl getmcontext9 getmcontext:10 movl 4(%esp), %eax12 movl %fs, 8(%eax)13 movl %es, 12(%eax)14 movl %ds, 16(%eax)15 movl %ss, 76(%eax)16 movl %edi, 20(%eax)17 movl %esi, 24(%eax)18 movl %ebp, 28(%eax)19 movl %ebx, 36(%eax)20 movl %edx, 40(%eax)21 movl %ecx, 44(%eax)23 movl $1, 48(%eax) /* %eax */24 movl (%esp), %ecx /* %eip */25 movl %ecx, 60(%eax)26 leal 4(%esp), %ecx /* %esp */27 movl %ecx, 72(%eax)29 movl 44(%eax), %ecx /* restore %ecx */30 movl $0, %eax31 ret33 .globl setmcontext34 setmcontext:35 movl 4(%esp), %eax37 movl 8(%eax), %fs38 movl 12(%eax), %es39 movl 16(%eax), %ds40 movl 76(%eax), %ss41 movl 20(%eax), %edi42 movl 24(%eax), %esi43 movl 28(%eax), %ebp44 movl 36(%eax), %ebx45 movl 40(%eax), %edx46 movl 44(%eax), %ecx48 movl 72(%eax), %esp49 pushl 60(%eax) /* new %eip */50 movl 48(%eax), %eax51 ret