2022-2023-1 20222812《Linux内核原理与分析》第二周作业

一、实验一

1.实验内容

(1)在Shell命令下常用的文本编辑器是VIM,打开文本编辑器VIM编辑main.c文件。

(2)编辑并保存main.c文件。

 (3)直接编译可使用一下命令,生成目标文件a.out,它可以执行但执行效果没有任何输出信息。可以通过“echo $?”命令来查看这个程序的返回值。

(4)如果想把main.c编译成一个汇编代码,那么可以使用如下命令:

gcc -S -o main.s main.c -m32

上述命令产生一个汇编代码文件main.s,打开main.s。

 

 (5)在VIM中,通过“g/\.s*/d”命令即可删除所有以“.”打头的字符串,就获得了“干净”的汇编代码。

二、实验分析

—从main程序开始执行
—ebp入栈
—把ebp值赋予给esp
—将esp值减4,指向下一存储空间(栈单位存储空间)
—将数值8存在esp所指的存储空间中

—调用f函数
—ebp入栈
—把ebp值赋予给esp
—将esp减4,指向下一地址空间
—将ebp加8所指向的存储空间内的内容赋予给累加寄存器eax
—将eax的内容赋予给esp

—调用g函数
—对ebp进行压栈
—把ebp值赋予给esp
—将ebp加8所指向的存储空间内的内容赋予给累加寄存器eax
—将eax储存的数值加11

—出栈
—返回main函数
—返回到f函数的leave命令
—撤销函数堆栈
—返回到主函数的leave命令
—将eax储存的数加1
—撤销函数堆栈
—返回程序运行值

总结:

1. 本周通过学习计算机汇编的基础知识和基本原理,理解到了计算机的基本原理存储程序和程序控制。

2. 预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中。在书写或者解读汇编程序的时候,一定要关注每一条指令中规定的计算机取数的地址,进行了什么操作,然后送到什么地址去等步骤。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值