码迷,mamicode.com
首页 > 编程语言 > 详细

计算机是如何工作的———高级语言转变为机器语言的过程(20135304 刘世鹏)

时间:2016-02-25 00:20:59      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

计算机是如何工作的———高级语言转变为机器语言的过程


 

作者:20135304 刘世鹏

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”

实验过程

写入c语言代码

技术分享

 

执行gcc -S -o main.s main.c -m32指令后得到汇编代码

技术分享

删除以“.”开头的附加项后得到纯净的汇编代码

技术分享

分析过程

得到纯净的汇编代码之后对其工作过程进行分析

前几步较为简单,ebp和esp所指向数值的箭头颜色与右边代码外框的颜色对应

值得强调的是在main函数执行到“call f”指令后,eip指向“f函数”,代码的执行进入f函数,

技术分享


在f函数中,eax计算器存储“5304”这一数值

技术分享

“call g ”指令将eip指向“g 函数”,开始执行g函数的指令。
在g函数中,eax修改5307为存储值

技术分享


pop %ebp指令将ebp指向4,esp上移一位

技术分享

 

 

 


技术分享

ret指令退出“g函数”,进入离开“f函数”的位置,esp上移一位


技术分享

执行f函数的leave指令,将ebp的值赋值给esp,随后将ebp的值指向1,随后esp上移一位


技术分享

退出f函数,执行离开main函数后的代码,修改eax为5308


技术分享

继续执行leave和ret指令,使得esp和ebp最后恢复初始状态。整个过程结束。

 

实验体会

在上学习信息安全系统中的“缓冲区溢出”实验中对汇编代码的执行过程已有了初步了解,经过这学期的课程,让我对以前感到模糊的概念有了清晰的认识,课程视频时间虽然不长,但讲解的很透彻,让我们学会汇编代码工作的核心思想。对计算机的工作原理有了更深的认识。可能是之前汇编学习不够扎实,在视频分析过程中没能一次理解的知识点就反复看视频理清思路,最终学有所得。

计算机是如何工作的———高级语言转变为机器语言的过程(20135304 刘世鹏)

标签:

原文地址:http://www.cnblogs.com/L20135304/p/5215409.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!