通过输入gcc -S -o main.s main.c 将下面c程序”week04学号.c“编译成汇编代码
int g(int x){
return x+3;
}
int f(int x){
int i = 学号后两位;
return g(x)+i;
}
int main(void){
return f(8)+1;
}
参考http://www.cnblogs.com/lxm20145215----/p/5982554.html,使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况。提交照片,要有学号信息。
实验步骤:
- 1、使用
gcc - g week0420165228.c -o week0420165228 -m32
指令在64位的机器上产生32位汇编 - 2、然后使用
gdb week0420165228
指令进入gdb调试器 - 3、
b main
在main函数处设置断点,然后r
运行 - 4、
disassemble
获取汇编代码 - 5、
i r
查看各寄存器的值 - 6、si进入下一条汇编指令
- 7、x/a查看栈的变化