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

 

相应帧栈图:

 

参考资料:课本,闫佳欣同学的博客;

posted @ 2015-10-13 23:43  20135327郭皓  阅读(154)  评论(0编辑  收藏  举报