今天重读《深入理解计算机系统》中关于递归的章节,发现书中的反汇编代码和自己本机的不同,
区别在于书中的递归汇编代码中有多处push操作,而本机的汇编代码中没有。
C代码如下:
本机汇编代码如下:
书上的汇编代码:
movl %eax, (%esp) 是将%eax(参数n)放入栈顶,完成了参数压栈的操作。
与书中的汇编代码相比,
1、使用的寄存器数量少了;
2、指令数量少了。
今天重读《深入理解计算机系统》中关于递归的章节,发现书中的反汇编代码和自己本机的不同, 区别在于书中的递归汇编代码中有多处push操作,而本机的汇编代码中没有。 C代码如下:
本机汇编代码如下:
书上的汇编代码:
movl %eax, (%esp) 是将%eax(参数n)放入栈顶,完成了参数压栈的操作。
与书中的汇编代码相比, 1、使用的寄存器数量少了; 2、指令数量少了。 ![]() |