计算机是如何工作的———高级语言转变为机器语言的过程(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 刘世鹏)的主要内容,如果未能解决你的问题,请参考以下文章

02_Python基础

了解编译原理

了解编译器

0计算机语言分类和应用程序接口(API)

文成小盆友python-num2 数据类型列表字典

初识Java--java常识归纳