Linux内核分析第一周作业,在云课堂的实验楼环境下完成。
本文作者:Michael
原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
一、实验代码:
int g(int x)
{
return x + 8;
}
int f(int x)
{
return g(x);
}
int main(void)
{
return f(2000) + 7;
}
二、反汇编后,去除一些暂时不需要的辅助信息:
g:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
addl $8, %eax
popl %ebp
ret
f:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl 8(%ebp), %eax
movl %eax, (%esp)
call g
leave
ret
main:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl $2000, (%esp)
call f
addl $7, %eax
leave
ret
三、堆栈的变化:
四、总结
计算机的运行依赖于机器指令的正确执行,指令的执行过程大致概括为:取指令、译码、取数据、执行和回写等操作。