1.globl setjmp 2setjmp: 3 mov (%rsp), %rsi 4 mov %rsi, (%rdi) 5 mov %rsp, 0x8(%rdi) 6 mov %rbp, 0x10(%rdi) 7 mov %rbx, 0x18(%rdi) 8 mov %r12, 0x20(%rdi) 9 mov %r13, 0x28(%rdi) 10 mov %r14, 0x30(%rdi) 11 mov %r15, 0x38(%rdi) 12 xor %eax, %eax 13 ret 14 15.globl longjmp 16longjmp: 17 mov %esi, %eax 18 mov 0x38(%rdi), %r15 19 mov 0x30(%rdi), %r14 20 mov 0x28(%rdi), %r13 21 mov 0x20(%rdi), %r12 22 mov 0x18(%rdi), %rbx 23 mov 0x10(%rdi), %rbp 24 mov 0x8(%rdi), %rsp 25 mov (%rdi), %rsi 26 mov %rsi, (%rsp) 27 ret 28