20135327郭皓——信息安全系统设计基础----第五周实验四
20135327郭皓——信息安全系统设计基础----第五周实验四
源代码:
汇编文件如下(删除gcc产生代码中以"."开头的编译器指令):
a:
pushl %ebp ;将%ebp入栈,为帧指针
movl %esp, %ebp ;建立空帧栈
movl 8(%ebp), %eax ;空出地址存变量
addl $4, %eax ;ax中值加4
popl %ebp ;%ebp出栈
ret
b:
pushl %ebp ;;将%ebp入栈,为帧指针
movl %esp, %ebp ;为call建立空帧栈
subl $4, %esp ;%esp中值减4
movl 8(%ebp), %eax ;空出地址存变量
movl %eax, (%esp)
call a ;调用add函数
leave ;为返回准备栈,相当于%ebp出栈
ret
main:
pushl %ebp ;将%ebp入栈,为帧指针
movl %esp, %ebp ;为main建立空帧栈
subl $4, %esp
movl $2, (%esp)
call b ;调用call函数
addl $7, %eax ;ax值加7
leave
ret
相应帧栈图:
参考资料:课本,闫佳欣同学的博客;