计算机是如何工作的———高级语言转变为机器语言的过程(20135304 刘世鹏)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机是如何工作的———高级语言转变为机器语言的过程(20135304 刘世鹏)相关的知识,希望对你有一定的参考价值。
计算机是如何工作的———高级语言转变为机器语言的过程
作者: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 刘世鹏)的主要内容,如果未能解决你的问题,请参考以下文章