/ | |
/ our buffer looks like: | |
/ eax,ebx,ecx,edx,esi,edi,esp,ebp,pc | |
.globl _setjmp | |
.globl setjmp | |
_setjmp: | |
setjmp: | |
pushl %ebx | |
movl 8(%esp), %ebx | |
movl %eax, (%ebx) | |
popl %eax | |
movl %eax, 4(%ebx) | |
movl %ecx, 8(%ebx) | |
movl %edx, 12(%ebx) | |
movl %esi, 16(%ebx) | |
movl %edi, 20(%ebx) | |
movl %esp, 24(%ebx) | |
movl %ebp, 28(%ebx) | |
movl (%esp), %eax | |
movl %eax, 32(%ebx) | |
xorl %eax, %eax | |
ret | |