书籍CSAPP中的汇编代码

时间:2018-03-25 16:18:06

标签: c assembly x86-64 att

在CSAPP,3.7.5寄存器中的本地存储一书中,有一个调用函数:

long P(long x, long y)
{
     long u = Q(y);
     long v = Q(x);
     return u + v;
}

,调用函数的生成汇编代码为:

P:
  pushq    %rbp
  pushq    %rbx
  subq     $8, %rsp       Align stack frame
  movq     %rdi, %rbp
  movq     %rsi, %rdi
  call     Q
  movq     %rax, %rbx
  movq     %rbp, %rdi
  call     Q
  addq     %rbx, %rax
  addq     $8, %rsp
  popq     %rbx
  popq     %rbp
  ret

我无法理解第3行subq $8, %rsp。这本书说它用于对齐堆栈框架。为什么机器在这里对齐堆栈框架?

0 个答案:

没有答案