您的位置:首页 > 运维架构 > Linux

Linux内核分析 实验一 ——by王玥

2016-02-24 22:28 344 查看
一、实验内容

1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同)

使用

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

命令编译成汇编代码,如下代码中的数字请自行修改以防与他人雷同

int g(int x)

{

return x + 3;

}

int f(int x)

{

return g(x);

}

int main(void)

{

return f(8) + 1;

}

2)根据本周所学知识分析汇编代码的工作过程,撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下:

题目自拟,内容围绕计算机是如何工作的进行;

博客中需要使用实验截图

博客内容中需要仔细分析汇编代码的工作过程中堆栈的变化

总结部分需要阐明自己对“计算机是如何工作的”理解。

3)请提交博客文章URL到网易云课堂MOOC平台,编辑成一个链接可以直接点击打开。

二、实验截图

1.编写C程序并进行反汇编:



2.使用vim.s查看反汇编后的结果:



3.分析汇编代码的工作过程中堆栈的变化:



三、总结

通过这次实验,我巩固了汇编中所学的知识,对计算机的工作方式有了更加深刻的了解。对X86汇编指令以及各类寄存器的作用更加清晰,明白了linux内核使用的是AT&T汇编格式。知道了函数调用堆栈是理解C代码在CPU上执行的关键以及函数调用堆栈是由逻辑上多个堆栈叠加起来的。计算机的基本原理是存储程序和程序控制。预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中。每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然后送到什么地址去等步骤。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: