1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| input_BigStruct_1: pushq %rbp movq %rsp, %rbp // rbp 向上就是参数 movq $1, 16(%rbp) popq %rbp ret test_func_1: pushq %rbp movq %rsp, %rbp // 分配栈空间 subq $160, %rsp
// 初始化第一份数据 leaq -80(%rbp), %rsi movl $0, %eax movl $10, %edx movq %rsi, %rdi movq %rdx, %rcx rep stosq leaq -80(%rbp), %rax movq %rax, %rdi call _ZN9BigStructC1Ev
// 复制第二份数据 movq -80(%rbp), %rax movq %rax, (%rsp) movq -72(%rbp), %rax movq %rax, 8(%rsp) movq -64(%rbp), %rax movq %rax, 16(%rsp) movq -56(%rbp), %rax movq %rax, 24(%rsp) movq -48(%rbp), %rax movq %rax, 32(%rsp) movq -40(%rbp), %rax movq %rax, 40(%rsp) movq -32(%rbp), %rax movq %rax, 48(%rsp) movq -24(%rbp), %rax movq %rax, 56(%rsp) movq -16(%rbp), %rax movq %rax, 64(%rsp) movq -8(%rbp), %rax movq %rax, 72(%rsp) // 直接调用, 即: 参数放在栈上传入了, 上面那份复制的直接用于参数 call input_BigStruct_1
leave ret
|