递归调用的汇编代码分析

今天重读《深入理解计算机系统》中关于递归的章节,发现书中的反汇编代码和自己本机的不同,

区别在于书中的递归汇编代码中有多处push操作,而本机的汇编代码中没有。

C代码如下:

 

本机汇编代码如下:

 

书上的汇编代码:

 

 

movl    %eax, (%esp) 是将%eax(参数n)放入栈顶,完成了参数压栈的操作。

 

与书中的汇编代码相比,

1、使用的寄存器数量少了;

2、指令数量少了。

你可能感兴趣的:(递归)