asm (
" movq %rsp, 0(%rsi) # 保存栈指针 \n"
" movq %rbp, 8(%rsi) # 保存帧指针 \n"
" movq (%rsp), %rax # 保存指令指针 \n"
" movq %rax, 16(%rsi) \n"
" movq %rbx, 24(%rsi) # 保存 rbx,r12-r15 \n"
" movq %r12, 32(%rsi) \n"
" movq %r13, 40(%rsi) \n"
" movq %r14, 48(%rsi) \n"
" movq %r15, 56(%rsi) \n"
" movq 56(%rdi), %r15 \n"
" movq 48(%rdi), %r14 \n"
" movq 40(%rdi), %r13 # 恢复 rbx,r12-r15 \n"
" movq 32(%rdi), %r12 \n"
" movq 24(%rdi), %rbx \n"
" movq 8(%rdi), %rbp # 恢复帧指针 \n"
" movq 0(%rdi), %rsp # 恢复栈指针 \n"
" movq 16(%rdi), %rax # 恢复指令指针 \n"
" movq %rax, (%rsp) \n"
);用于保存和恢复两个不同的函数,用中文改错