工作用计算机c语言,通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的...

在学习过了孟老师的视频教学之后,实验做起来相对容易一些。

1、我使用ls命令查看了当前目录下的文件,进入Code/shiyanlou_cs195目录下进行代码编写,如图1。

2、创建main.c文件,编写代码,我将所给的示例程序中的数值进行了修改,如图2。

3、保存之后,使用gcc -S -o main.s main.c -m32命令生成汇编语言文件。

4、打开main.s文件,如图4,里面是C程序对应的汇编语言。

5、为了分析方便,将所有以.开头的语句都删除,我查了一下Linux环境下的命令,可以用dd直接删除一行代码,剩下的就是纯汇编代码,如图5。

通过这次实验,使我对如何反汇编一个C程序有了一定了解,使用gcc -S -o main.s main.c -m32命令,-m32主要是指生成32位的格式。另外,调用其它函数时,将指令指针入栈保存,以便函数执行结束能返回来继续下一条指令的执行,相当于push eip。函数参数入栈,参数入栈顺序是从右到左进栈。函数退出时,将esp赋值给ebp,从而释放当前函数所使用的栈空间。

注:上传了5张截图不知道能不能看到,所以又用实验楼内的截图工具截了两张。

ljqrLKSyBGrRF5AyDimvR9hucD3f6x9WekGEES4W-wm

OQ1RN7OpbjdbgrocZrUbNMun6AbqND9hFuMASgnu-wm

J9rbsAMojLxU051w0VDfsHiyoKxWqMMxzbAOyDur-wm

5oM1k8L33cUI0jnj9TUdn7vaNirxN41HYS9aH3TK-wm

M3KyX7y6e2BD8z7hpUCdJWUimPKwKqgEOgE0EH0Z-wm

bjZO7OYMZbfeEnACpQa78c8R9OgesNkh9mOCLvO1-wm

GChoIUy3sWADP9mFVQu4A2chBu0tOxDwIOKE11w7-wm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值