步骤:
1、创建一个.c函数,并在其中输入代码
2、使用命令将其译成汇编代码
3、在文档中打开main2818.s文件,其中则是汇编代码
4、删去用于链接辅助信息的语句(即前面带.的语句),结果如下
g:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
addl $2818, %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 $2818, (%esp)
call f
addl $1, %eax
leave
ret
4、汇编代码分析
调用流程 main函数
汇编语言调用堆栈变化过程
-
初始阶段,esp、ebp指针都是指向1000这个位置(假设堆栈大小为1000)
-
执行main函数
-
执行
-
执行跳转到f函数执行
-
- 执行
-执行跳转到g函数
- 执行
- 执行
- 执行
-
执行
-
-
执行
-
执行
-
-
执行
-
5、遇到的问题
-
未注意到文件被删除就开始编译代码。
-
对编译的知识遗忘较多,通过查找资料进行复习和回顾再进行汇编代码的分析。



